1 package org
.argeo
.security
.core
;
3 import java
.util
.ArrayList
;
4 import java
.util
.Collections
;
7 import org
.apache
.commons
.logging
.Log
;
8 import org
.apache
.commons
.logging
.LogFactory
;
9 import org
.argeo
.security
.ArgeoUser
;
10 import org
.argeo
.security
.SimpleArgeoUser
;
11 import org
.argeo
.security
.UserNature
;
12 import org
.springframework
.security
.Authentication
;
13 import org
.springframework
.security
.GrantedAuthority
;
14 import org
.springframework
.security
.GrantedAuthorityImpl
;
15 import org
.springframework
.security
.userdetails
.User
;
16 import org
.springframework
.security
.userdetails
.UserDetails
;
18 public class ArgeoUserDetails
extends User
implements ArgeoUser
{
19 private static final long serialVersionUID
= 1L;
20 private final static Log log
= LogFactory
.getLog(ArgeoUserDetails
.class);
22 private final List
<UserNature
> userNatures
;
23 private final List
<String
> roles
;
25 public ArgeoUserDetails(String username
, List
<UserNature
> userNatures
,
26 String password
, GrantedAuthority
[] authorities
)
27 throws IllegalArgumentException
{
28 super(username
, password
, true, true, true, true, authorities
);
29 this.userNatures
= Collections
.unmodifiableList(userNatures
);
32 this.roles
= Collections
.unmodifiableList(addAuthoritiesToRoles(
33 getAuthorities(), new ArrayList
<String
>()));
36 public ArgeoUserDetails(ArgeoUser argeoUser
) {
37 this(argeoUser
.getUsername(), argeoUser
.getUserNatures(), argeoUser
38 .getPassword(), rolesToAuthorities(argeoUser
.getRoles()));
41 public List
<UserNature
> getUserNatures() {
45 public void updateUserNatures(List
<UserNature
> userNaturesData
) {
46 UserNature
.updateUserNaturesWithCheck(userNatures
, userNaturesData
);
49 public List
<String
> getRoles() {
53 /** The provided list, for chaining using {@link Collections} */
54 protected static List
<String
> addAuthoritiesToRoles(
55 GrantedAuthority
[] authorities
, List
<String
> roles
) {
56 for (GrantedAuthority authority
: authorities
) {
57 roles
.add(authority
.getAuthority());
62 protected static GrantedAuthority
[] rolesToAuthorities(List
<String
> roles
) {
63 GrantedAuthority
[] arr
= new GrantedAuthority
[roles
.size()];
64 for (int i
= 0; i
< roles
.size(); i
++) {
65 String role
= roles
.get(i
);
66 if (log
.isTraceEnabled())
67 log
.debug("Convert role " + role
+ " to authority (i=" + i
69 arr
[i
] = new GrantedAuthorityImpl(role
);
74 public static SimpleArgeoUser
createSimpleArgeoUser(UserDetails userDetails
) {
75 if (userDetails
instanceof ArgeoUser
) {
76 return new SimpleArgeoUser((ArgeoUser
) userDetails
);
78 SimpleArgeoUser argeoUser
= new SimpleArgeoUser();
79 argeoUser
.setUsername(userDetails
.getUsername());
80 addAuthoritiesToRoles(userDetails
.getAuthorities(), argeoUser
86 public static ArgeoUser
asArgeoUser(Authentication authentication
) {
87 if (authentication
== null)
90 if (authentication
.getPrincipal() instanceof ArgeoUser
) {
91 return new SimpleArgeoUser((ArgeoUser
) authentication
94 SimpleArgeoUser argeoUser
= new SimpleArgeoUser();
95 argeoUser
.setUsername(authentication
.getName());
96 addAuthoritiesToRoles(authentication
.getAuthorities(), argeoUser