]> git.argeo.org Git - lgpl/argeo-commons.git/blob - security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/CurrentUser.java
Improve packaging (esp. security)
[lgpl/argeo-commons.git] / security / eclipse / plugins / org.argeo.security.ui / src / main / java / org / argeo / security / ui / CurrentUser.java
1 package org.argeo.security.ui;
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 public class CurrentUser {
16 public final static String getUsername() {
17 Subject subject = getSubject();
18 if (subject == null)
19 return null;
20 Principal principal = subject.getPrincipals().iterator().next();
21 return principal.getName();
22
23 }
24
25 public final static Set<String> roles() {
26 Principal principal = getSubject().getPrincipals().iterator().next();
27 Authentication authentication = (Authentication) principal;
28 Set<String> roles = Collections.synchronizedSet(new HashSet<String>());
29 for (GrantedAuthority ga : authentication.getAuthorities()) {
30 roles.add(ga.getAuthority());
31 }
32 return Collections.unmodifiableSet(roles);
33 }
34
35 public final static Subject getSubject() {
36
37 Subject subject = Subject.getSubject(AccessController.getContext());
38 if (subject == null)
39 throw new ArgeoException("Not authenticated.");
40 return subject;
41
42 }
43 }