1 package org
.argeo
.security
.core
;
3 import java
.util
.ArrayList
;
4 import java
.util
.Collections
;
7 import org
.argeo
.security
.ArgeoUser
;
8 import org
.argeo
.security
.BasicArgeoUser
;
9 import org
.argeo
.security
.UserNature
;
10 import org
.springframework
.security
.Authentication
;
11 import org
.springframework
.security
.GrantedAuthority
;
12 import org
.springframework
.security
.GrantedAuthorityImpl
;
13 import org
.springframework
.security
.userdetails
.User
;
14 import org
.springframework
.security
.userdetails
.UserDetails
;
16 public class ArgeoUserDetails
extends User
implements ArgeoUser
{
17 private static final long serialVersionUID
= 1L;
19 private final List
<UserNature
> userNatures
;
20 private final List
<String
> roles
;
22 public ArgeoUserDetails(String username
, List
<UserNature
> userNatures
,
23 String password
, GrantedAuthority
[] authorities
)
24 throws IllegalArgumentException
{
25 super(username
, password
, true, true, true, true, authorities
);
26 this.userNatures
= Collections
.unmodifiableList(userNatures
);
29 this.roles
= Collections
.unmodifiableList(addAuthoritiesToRoles(
30 getAuthorities(), new ArrayList
<String
>()));
33 public ArgeoUserDetails(ArgeoUser argeoUser
) {
34 this(argeoUser
.getUsername(), argeoUser
.getUserNatures(), argeoUser
.getPassword(),
35 rolesToAuthorities(argeoUser
.getRoles()));
38 public List
<UserNature
> getUserNatures() {
42 public List
<String
> getRoles() {
46 /** The provided list, for chaining using {@link Collections} */
47 protected static List
<String
> addAuthoritiesToRoles(
48 GrantedAuthority
[] authorities
, List
<String
> roles
) {
49 for (GrantedAuthority authority
: authorities
) {
50 roles
.add(authority
.getAuthority());
55 protected static GrantedAuthority
[] rolesToAuthorities(List
<String
> roles
) {
56 GrantedAuthority
[] arr
= new GrantedAuthority
[roles
.size()];
57 for (int i
= 0; i
< roles
.size(); i
++) {
58 arr
[i
] = new GrantedAuthorityImpl(roles
.get(i
));
63 public static BasicArgeoUser
createBasicArgeoUser(UserDetails userDetails
) {
64 BasicArgeoUser argeoUser
= new BasicArgeoUser();
65 argeoUser
.setUsername(userDetails
.getUsername());
66 addAuthoritiesToRoles(userDetails
.getAuthorities(), argeoUser
71 public static ArgeoUser
asArgeoUser(Authentication authentication
) {
72 if (authentication
.getPrincipal() instanceof ArgeoUser
) {
73 return (ArgeoUser
) authentication
.getPrincipal();
75 BasicArgeoUser argeoUser
= new BasicArgeoUser();
76 argeoUser
.setUsername(authentication
.getName());
77 addAuthoritiesToRoles(authentication
.getAuthorities(), argeoUser