]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/jcr/JcrUserDetails.java
JCR system session
[lgpl/argeo-commons.git] / security / runtime / org.argeo.security.core / src / main / java / org / argeo / security / jcr / JcrUserDetails.java
index f200a28a420bdc225314408b790366f617649082..f7d016cf40cbd1983400c83adbd301e344a3d81e 100644 (file)
@@ -1,6 +1,10 @@
 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;
 
 public class JcrUserDetails extends User {
@@ -20,4 +24,20 @@ public class JcrUserDetails extends User {
                return homePath;
        }
 
+       public JcrUserDetails cloneWithNewRoles(List<String> roles) {
+               List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
+               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()]));
+       }
+
+       public JcrUserDetails cloneWithNewPassword(String password) {
+               return new JcrUserDetails(homePath, getUsername(), password,
+                               isEnabled(), isAccountNonExpired(), isAccountNonExpired(),
+                               isAccountNonLocked(), getAuthorities());
+       }
 }