]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.security.ui/src/org/argeo/security/ui/internal/CurrentUser.java
Documentation
[lgpl/argeo-commons.git] / org.argeo.security.ui / src / org / argeo / security / ui / internal / CurrentUser.java
index 944bc2321e8e9387fbda0366e44361c29dc32ff6..f5a242d3a4a514420b3b560d60ba848921c0364a 100644 (file)
@@ -17,15 +17,15 @@ package org.argeo.security.ui.internal;
 
 import java.security.AccessController;
 import java.security.Principal;
+import java.security.acl.Group;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
 
 import javax.security.auth.Subject;
+import javax.security.auth.x500.X500Principal;
 
 import org.argeo.ArgeoException;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.GrantedAuthority;
 
 /**
  * Retrieves information about the current user. Not an API, can change without
@@ -36,30 +36,52 @@ public class CurrentUser {
                Subject subject = getSubject();
                if (subject == null)
                        return null;
-               Principal principal = subject.getPrincipals().iterator().next();
+               Principal principal = subject.getPrincipals(X500Principal.class)
+                               .iterator().next();
                return principal.getName();
 
        }
 
        public final static Set<String> roles() {
                Set<String> roles = Collections.synchronizedSet(new HashSet<String>());
-               Authentication authentication = getAuthentication();
-               for (GrantedAuthority ga : authentication.getAuthorities()) {
-                       roles.add(ga.getAuthority());
+               // roles.add("ROLE_USER");
+               Subject subject = getSubject();
+               X500Principal userPrincipal = subject
+                               .getPrincipals(X500Principal.class).iterator().next();
+               roles.add(userPrincipal.getName());
+               for (Principal group : subject.getPrincipals(Group.class)) {
+                       roles.add(group.getName());
                }
-               return Collections.unmodifiableSet(roles);
+               return roles;
        }
 
-       public final static Authentication getAuthentication() {
-               Set<Authentication> authens = getSubject().getPrincipals(
-                               Authentication.class);
-               if (authens != null && !authens.isEmpty()) {
-                       Principal principal = authens.iterator().next();
-                       Authentication authentication = (Authentication) principal;
-                       return authentication;
-               }
-               throw new ArgeoException("No authentication found");
-       }
+       // public final static String getUsername() {
+       // return getAuthentication().getName();
+       // }
+
+       // public final static Set<String> roles() {
+       // Set<String> roles = Collections.synchronizedSet(new HashSet<String>());
+       // Authentication authentication = getAuthentication();
+       // for (GrantedAuthority ga : authentication.getAuthorities()) {
+       // roles.add(ga.getAuthority());
+       // }
+       // return Collections.unmodifiableSet(roles);
+       // }
+       //
+       // public final static Authentication getAuthentication() {
+       // return SecurityContextHolder.getContext().getAuthentication();
+       // }
+
+       // public final static Authentication getAuthentication() {
+       // Set<Authentication> authens = getSubject().getPrincipals(
+       // Authentication.class);
+       // if (authens != null && !authens.isEmpty()) {
+       // Principal principal = authens.iterator().next();
+       // Authentication authentication = (Authentication) principal;
+       // return authentication;
+       // }
+       // throw new ArgeoException("No authentication found");
+       // }
 
        public final static Subject getSubject() {
                Subject subject = Subject.getSubject(AccessController.getContext());