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=374cef7c269e0fd501b5bd0748c16be690318672;hp=3815b843b18c447650f2de9be7e45a322528b389;hpb=2f510fb09e18bc3d3e902c8131d0037763c5f279;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 3815b843b..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 @@ -3,15 +3,11 @@ package org.argeo.security.jcr; import java.util.ArrayList; import java.util.List; -import javax.jcr.Node; -import javax.jcr.RepositoryException; -import javax.jcr.Session; - -import org.argeo.ArgeoException; 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; @@ -25,48 +21,7 @@ public class JcrUserDetails extends User { this.homePath = homePath; } - public String getHomePath() { - return homePath; - } - - public static JcrUserDetails argeoUserToJcrUserDetails( - JcrArgeoUser argeoUser) { - try { - List gas = new ArrayList(); - for (String role : argeoUser.getRoles()) - gas.add(new GrantedAuthorityImpl(role)); - return new JcrUserDetails(argeoUser.getHome().getPath(), - argeoUser.getUsername(), argeoUser.getPassword(), - argeoUser.getEnabled(), true, true, true, - gas.toArray(new GrantedAuthority[gas.size()])); - } catch (Exception e) { - throw new ArgeoException("Cannot convert " + argeoUser - + " to JCR user details", e); - } - } - - public static JcrArgeoUser jcrUserDetailsToArgeoUser(Session userSession, - JcrUserDetails jcrUserDetails) { - if (!userSession.getUserID().equals(jcrUserDetails.getUsername())) - throw new ArgeoException("User session has user id " - + userSession.getUserID() + " while details has username " - + jcrUserDetails.getUsername()); - - Node userHome; - try { - userHome = userSession.getNode(jcrUserDetails.getHomePath()); - } catch (RepositoryException e) { - throw new ArgeoException("Cannot retrieve user home with path " - + jcrUserDetails.getHomePath(), e); - } - List roles = new ArrayList(); - for (GrantedAuthority ga : jcrUserDetails.getAuthorities()) - roles.add(ga.getAuthority()); - return new JcrArgeoUser(userHome, jcrUserDetails.getPassword(), roles, - jcrUserDetails.isEnabled()); - - } - + /** Clone immutable with new roles */ public JcrUserDetails cloneWithNewRoles(List roles) { List authorities = new ArrayList(); for (String role : roles) { @@ -78,9 +33,15 @@ public class JcrUserDetails extends User { 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; + } + }