1 package org
.argeo
.security
.equinox
;
3 import java
.security
.AccessController
;
4 import java
.security
.Principal
;
5 import java
.util
.Collections
;
6 import java
.util
.HashSet
;
9 import javax
.security
.auth
.Subject
;
10 import javax
.security
.auth
.login
.LoginException
;
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
;
17 public class CurrentUser
{
18 public final static String
getUsername() {
19 Subject subject
= getSubject();
22 Principal principal
= subject
.getPrincipals().iterator().next();
23 return principal
.getName();
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());
34 return Collections
.unmodifiableSet(roles
);
37 private final static ILoginContext
getLoginContext() {
38 return EquinoxSecurity
.getLoginContext();
39 // return LoginContextFactory
40 // .createContext(EquinoxSecurity.CONTEXT_SPRING);
43 // private static void login() {
45 // getLoginContext().login();
46 // } catch (LoginException e) {
47 // throw new RuntimeException("Cannot login", e);
51 public final static Subject
getSubject() {
53 Subject subject
= Subject
.getSubject(AccessController
.getContext());
54 // subject = Subject.getSubject(AccessController.getContext());
57 getLoginContext().login();
58 subject
= getLoginContext().getSubject();
59 } catch (Exception e
) {
60 throw new ArgeoException("Cannot retrieve subject", e
);
67 public static void logout() {
69 getLoginContext().logout();
70 } catch (LoginException e
) {
71 throw new ArgeoException("Cannot log out", e
);