1 package org
.argeo
.security
.ui
.internal
;
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
;
11 import org
.argeo
.ArgeoException
;
12 import org
.springframework
.security
.Authentication
;
13 import org
.springframework
.security
.GrantedAuthority
;
16 * Retrieves information about the current user. Not an API, can change without
19 public class CurrentUser
{
20 public final static String
getUsername() {
21 Subject subject
= getSubject();
24 Principal principal
= subject
.getPrincipals().iterator().next();
25 return principal
.getName();
29 public final static Set
<String
> roles() {
30 Set
<String
> roles
= Collections
.synchronizedSet(new HashSet
<String
>());
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());
41 return Collections
.unmodifiableSet(roles
);
44 public final static Subject
getSubject() {
45 Subject subject
= Subject
.getSubject(AccessController
.getContext());
47 throw new ArgeoException("Not authenticated.");