X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=security%2Fruntime%2Forg.argeo.security.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fcore%2FArgeoUserDetails.java;h=b20bac447eaf9b5c3e4a6554498b0bfb668af5fb;hb=e241a5585404c07bea8351c4112be64512ad7fb9;hp=1f82ee949ae639ac837a95472f1227f1de90b3d7;hpb=6a6a3ad253f3d52cda5f7e9f4a59815c05a242c9;p=lgpl%2Fargeo-commons.git diff --git a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/ArgeoUserDetails.java b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/ArgeoUserDetails.java index 1f82ee949..b20bac447 100644 --- a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/ArgeoUserDetails.java +++ b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/ArgeoUserDetails.java @@ -5,9 +5,12 @@ import java.util.Collections; import java.util.List; import org.argeo.security.ArgeoUser; +import org.argeo.security.BasicArgeoUser; import org.argeo.security.UserNature; +import org.springframework.security.Authentication; import org.springframework.security.GrantedAuthority; import org.springframework.security.userdetails.User; +import org.springframework.security.userdetails.UserDetails; public class ArgeoUserDetails extends User implements ArgeoUser { private static final long serialVersionUID = 1L; @@ -20,13 +23,10 @@ public class ArgeoUserDetails extends User implements ArgeoUser { throws IllegalArgumentException { super(username, password, true, true, true, true, authorities); this.userNatures = Collections.unmodifiableList(userNatures); - + // Roles - List roles = new ArrayList(); - for (GrantedAuthority authority : getAuthorities()) { - roles.add(authority.getAuthority()); - } - this.roles = Collections.unmodifiableList(roles); + this.roles = Collections.unmodifiableList(addAuthoritiesToRoles( + getAuthorities(), new ArrayList())); } public List getUserNatures() { @@ -36,4 +36,30 @@ public class ArgeoUserDetails extends User implements ArgeoUser { public List getRoles() { return roles; } + + /** The provided list, for chaining using {@link Collections} */ + protected static List addAuthoritiesToRoles( + GrantedAuthority[] authorities, List roles) { + for (GrantedAuthority authority : authorities) { + roles.add(authority.getAuthority()); + } + return roles; + } + + public static BasicArgeoUser createBasicArgeoUser(UserDetails userDetails) { + BasicArgeoUser argeoUser = new BasicArgeoUser(); + argeoUser.setUsername(userDetails.getUsername()); + addAuthoritiesToRoles(userDetails.getAuthorities(), argeoUser + .getRoles()); + return argeoUser; + } + + public static BasicArgeoUser createBasicArgeoUser( + Authentication authentication) { + BasicArgeoUser argeoUser = new BasicArgeoUser(); + argeoUser.setUsername(authentication.getName()); + addAuthoritiesToRoles(authentication.getAuthorities(), argeoUser + .getRoles()); + return argeoUser; + } }