X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.ui%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Finternal%2FCurrentUser.java;h=f5a242d3a4a514420b3b560d60ba848921c0364a;hb=7eab8a52b56a763e0d0e5153d298ce658e41a22f;hp=944bc2321e8e9387fbda0366e44361c29dc32ff6;hpb=4b56d461613392a3808d886d5373cf46b65a040e;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.ui/src/org/argeo/security/ui/internal/CurrentUser.java b/org.argeo.security.ui/src/org/argeo/security/ui/internal/CurrentUser.java index 944bc2321..f5a242d3a 100644 --- a/org.argeo.security.ui/src/org/argeo/security/ui/internal/CurrentUser.java +++ b/org.argeo.security.ui/src/org/argeo/security/ui/internal/CurrentUser.java @@ -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 roles() { Set roles = Collections.synchronizedSet(new HashSet()); - 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 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 roles() { + // Set roles = Collections.synchronizedSet(new HashSet()); + // 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 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());