]> git.argeo.org Git - lgpl/argeo-commons.git/blob - security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/internal/CurrentUser.java
Improve login dialog
[lgpl/argeo-commons.git] / security / plugins / org.argeo.security.ui / src / main / java / org / argeo / security / ui / internal / CurrentUser.java
1 package org.argeo.security.ui.internal;
2
3 import java.security.AccessController;
4 import java.security.Principal;
5 import java.util.Collections;
6 import java.util.HashSet;
7 import java.util.Set;
8
9 import javax.security.auth.Subject;
10
11 import org.argeo.ArgeoException;
12 import org.springframework.security.Authentication;
13 import org.springframework.security.GrantedAuthority;
14
15 /**
16 * Retrieves information about the current user. Not an API, can change without
17 * notice.
18 */
19 public class CurrentUser {
20 public final static String getUsername() {
21 Subject subject = getSubject();
22 if (subject == null)
23 return null;
24 Principal principal = subject.getPrincipals().iterator().next();
25 return principal.getName();
26
27 }
28
29 public final static Set<String> roles() {
30 Set<String> roles = Collections.synchronizedSet(new HashSet<String>());
31
32 Set<Authentication> authens = getSubject().getPrincipals(
33 Authentication.class);
34 if (authens != null && !authens.isEmpty()) {
35 Principal principal = authens.iterator().next();
36 Authentication authentication = (Authentication) principal;
37 for (GrantedAuthority ga : authentication.getAuthorities()) {
38 roles.add(ga.getAuthority());
39 }
40 }
41 return Collections.unmodifiableSet(roles);
42 }
43
44 public final static Subject getSubject() {
45 Subject subject = Subject.getSubject(AccessController.getContext());
46 if (subject == null)
47 throw new ArgeoException("Not authenticated.");
48 return subject;
49 }
50 }