]> git.argeo.org Git - lgpl/argeo-commons.git/blob - security/eclipse/plugins/org.argeo.security.equinox/src/main/java/org/argeo/security/equinox/CurrentUser.java
d89ddee5a62c0c3dcd33fe66f8bf3a8201d314a1
[lgpl/argeo-commons.git] / security / eclipse / plugins / org.argeo.security.equinox / src / main / java / org / argeo / security / equinox / CurrentUser.java
1 package org.argeo.security.equinox;
2
3 import java.security.Principal;
4 import java.util.Collections;
5 import java.util.HashSet;
6 import java.util.Set;
7
8 import javax.security.auth.Subject;
9
10 import org.eclipse.equinox.security.auth.ILoginContext;
11 import org.eclipse.equinox.security.auth.LoginContextFactory;
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 private final static ILoginContext getLoginContext() {
36 return EquinoxSecurity.getLoginContext();
37 // return LoginContextFactory
38 // .createContext(EquinoxSecurity.CONTEXT_SPRING);
39 }
40
41 // private static void login() {
42 // try {
43 // getLoginContext().login();
44 // } catch (LoginException e) {
45 // throw new RuntimeException("Cannot login", e);
46 // }
47 // }
48
49 public final static Subject getSubject() {
50
51 Subject subject = null;
52 // subject = Subject.getSubject(AccessController.getContext());
53 try {
54 getLoginContext().login();
55 subject = getLoginContext().getSubject();
56 } catch (Exception e) {
57 throw new RuntimeException("Cannot retrieve subject", e);
58 }
59
60 return subject;
61
62 }
63
64 }