]> 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
Introduce UI application
[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.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 import javax.security.auth.login.LoginException;
11
12 import org.argeo.ArgeoException;
13 import org.eclipse.equinox.security.auth.ILoginContext;
14 import org.springframework.security.Authentication;
15 import org.springframework.security.GrantedAuthority;
16
17 public class CurrentUser {
18 public final static String getUsername() {
19 Subject subject = getSubject();
20 if (subject == null)
21 return null;
22 Principal principal = subject.getPrincipals().iterator().next();
23 return principal.getName();
24
25 }
26
27 public final static Set<String> roles() {
28 Principal principal = getSubject().getPrincipals().iterator().next();
29 Authentication authentication = (Authentication) principal;
30 Set<String> roles = Collections.synchronizedSet(new HashSet<String>());
31 for (GrantedAuthority ga : authentication.getAuthorities()) {
32 roles.add(ga.getAuthority());
33 }
34 return Collections.unmodifiableSet(roles);
35 }
36
37 private final static ILoginContext getLoginContext() {
38 return EquinoxSecurity.getLoginContext();
39 // return LoginContextFactory
40 // .createContext(EquinoxSecurity.CONTEXT_SPRING);
41 }
42
43 // private static void login() {
44 // try {
45 // getLoginContext().login();
46 // } catch (LoginException e) {
47 // throw new RuntimeException("Cannot login", e);
48 // }
49 // }
50
51 public final static Subject getSubject() {
52
53 Subject subject = Subject.getSubject(AccessController.getContext());
54 // subject = Subject.getSubject(AccessController.getContext());
55 if (subject == null)
56 try {
57 getLoginContext().login();
58 subject = getLoginContext().getSubject();
59 } catch (Exception e) {
60 throw new ArgeoException("Cannot retrieve subject", e);
61 }
62
63 return subject;
64
65 }
66
67 public static void logout() {
68 try {
69 getLoginContext().logout();
70 } catch (LoginException e) {
71 throw new ArgeoException("Cannot log out", e);
72 }
73 }
74 }