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
>());
31 Authentication authentication
= getAuthentication();
32 for (GrantedAuthority ga
: authentication
.getAuthorities()) {
33 roles
.add(ga
.getAuthority());
35 return Collections
.unmodifiableSet(roles
);
38 public final static Authentication
getAuthentication() {
39 Set
<Authentication
> authens
= getSubject().getPrincipals(
40 Authentication
.class);
41 if (authens
!= null && !authens
.isEmpty()) {
42 Principal principal
= authens
.iterator().next();
43 Authentication authentication
= (Authentication
) principal
;
44 return authentication
;
46 throw new ArgeoException("No authentication found");
49 public final static Subject
getSubject() {
50 Subject subject
= Subject
.getSubject(AccessController
.getContext());
52 throw new ArgeoException("Not authenticated.");