Improve RAP security
[lgpl/argeo-commons.git] / security / runtime / org.argeo.security.core / src / main / java / org / argeo / security / jcr / JcrUserDetails.java
index ea66b5ff74e529f03d2bb97b766253b51e227f7d..3815b843b18c447650f2de9be7e45a322528b389 100644 (file)
@@ -66,4 +66,21 @@ public class JcrUserDetails extends User {
                                jcrUserDetails.isEnabled());
 
        }
+
+       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());
+       }
 }