X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=security%2Feclipse%2Fplugins%2Forg.argeo.security.ui%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fui%2FCurrentUser.java;fp=security%2Feclipse%2Fplugins%2Forg.argeo.security.ui%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fui%2FCurrentUser.java;h=a864c3a1045b6e7e798df0971311ab08e6aae9ca;hb=9ecac0dc0810a3cabf8eb75951f1b7a3c149ae94;hp=0000000000000000000000000000000000000000;hpb=86f2012012fd0e3f2fc94341836f6ab38e35d345;p=lgpl%2Fargeo-commons.git diff --git a/security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/CurrentUser.java b/security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/CurrentUser.java new file mode 100644 index 000000000..a864c3a10 --- /dev/null +++ b/security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/CurrentUser.java @@ -0,0 +1,43 @@ +package org.argeo.security.ui; + +import java.security.AccessController; +import java.security.Principal; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +import javax.security.auth.Subject; + +import org.argeo.ArgeoException; +import org.springframework.security.Authentication; +import org.springframework.security.GrantedAuthority; + +public class CurrentUser { + public final static String getUsername() { + Subject subject = getSubject(); + if (subject == null) + return null; + Principal principal = subject.getPrincipals().iterator().next(); + return principal.getName(); + + } + + public final static Set roles() { + Principal principal = getSubject().getPrincipals().iterator().next(); + Authentication authentication = (Authentication) principal; + Set roles = Collections.synchronizedSet(new HashSet()); + for (GrantedAuthority ga : authentication.getAuthorities()) { + roles.add(ga.getAuthority()); + } + return Collections.unmodifiableSet(roles); + } + + public final static Subject getSubject() { + + Subject subject = Subject.getSubject(AccessController.getContext()); + if (subject == null) + throw new ArgeoException("Not authenticated."); + return subject; + + } +}