X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=security%2Fruntime%2Forg.argeo.security.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fjcr%2FJcrUserDetails.java;h=11e463d349a7a7f86cf30d953e0636ef342ea8db;hb=0d8a9149227c52245ff9eb20f29ad2b81a99b3e2;hp=f200a28a420bdc225314408b790366f617649082;hpb=772c16a288d19cc10a320c3798b30d6d02f969ba;p=lgpl%2Fargeo-commons.git diff --git a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/jcr/JcrUserDetails.java b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/jcr/JcrUserDetails.java index f200a28a4..11e463d34 100644 --- a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/jcr/JcrUserDetails.java +++ b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/jcr/JcrUserDetails.java @@ -1,8 +1,13 @@ package org.argeo.security.jcr; +import java.util.ArrayList; +import java.util.List; + import org.springframework.security.GrantedAuthority; +import org.springframework.security.GrantedAuthorityImpl; import org.springframework.security.userdetails.User; +/** User details wrapping a home node. */ public class JcrUserDetails extends User { private static final long serialVersionUID = -3594542993773402380L; private final String homePath; @@ -16,6 +21,25 @@ public class JcrUserDetails extends User { this.homePath = homePath; } + /** Clone immutable with new roles */ + public JcrUserDetails cloneWithNewRoles(List roles) { + List authorities = new ArrayList(); + for (String role : roles) { + authorities.add(new GrantedAuthorityImpl(role)); + } + return new JcrUserDetails(homePath, getUsername(), getPassword(), + isEnabled(), isAccountNonExpired(), isAccountNonExpired(), + isAccountNonLocked(), + authorities.toArray(new GrantedAuthority[authorities.size()])); + } + + /** Clone immutable with new password */ + public JcrUserDetails cloneWithNewPassword(String password) { + return new JcrUserDetails(homePath, getUsername(), password, + isEnabled(), isAccountNonExpired(), isAccountNonExpired(), + isAccountNonLocked(), getAuthorities()); + } + public String getHomePath() { return homePath; }