]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - security/runtime/org.argeo.security.ldap/src/main/java/org/argeo/security/ldap/jcr/JcrUserDetailsContextMapper.java
Use bind authentication in LDAP
[lgpl/argeo-commons.git] / security / runtime / org.argeo.security.ldap / src / main / java / org / argeo / security / ldap / jcr / JcrUserDetailsContextMapper.java
index bfbed855860f4f37f57d1444600a6f7c2a3559fa..6b166d5c5613dfd58483ccc2382758d40e2e5c1a 100644 (file)
@@ -17,7 +17,6 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.argeo.ArgeoException;
 import org.argeo.jcr.ArgeoNames;
-import org.argeo.jcr.ArgeoTypes;
 import org.argeo.jcr.JcrUtils;
 import org.argeo.security.jcr.JcrUserDetails;
 import org.springframework.ldap.core.DirContextAdapter;
@@ -103,13 +102,14 @@ public class JcrUserDetailsContextMapper implements UserDetailsContextMapper,
                        // session = nodeRepo.login();
                        Node userHome = JcrUtils.getUserHome(session, username);
                        if (userHome == null)
-                               userHome = createUserHome(session, username);
+                               userHome = JcrUtils.createUserHome(session, homeBasePath,
+                                               username);
                        String userHomePath = userHome.getPath();
-                       Node userProfile;
-                       if (userHome.hasNode(ARGEO_USER_PROFILE)) {
-                               userProfile = userHome.getNode(ARGEO_USER_PROFILE);
+                       Node userProfile = userHome.getNode(ARGEO_PROFILE);
+                       if (userHome.hasNode(ARGEO_PROFILE)) {
+                               userProfile = userHome.getNode(ARGEO_PROFILE);
                        } else {
-                               userProfile = userHome.addNode(ARGEO_USER_PROFILE);
+                               userProfile = userHome.addNode(ARGEO_PROFILE);
                                userProfile.addMixin(NodeType.MIX_TITLE);
                                userProfile.addMixin(NodeType.MIX_CREATED);
                                userProfile.addMixin(NodeType.MIX_LAST_MODIFIED);
@@ -128,24 +128,6 @@ public class JcrUserDetailsContextMapper implements UserDetailsContextMapper,
                }
        }
 
-       protected Node createUserHome(Session session, String username) {
-               try {
-                       Node userHome = JcrUtils.mkdirs(session,
-                                       usernameToHomePath(username));
-                       userHome.addMixin(ArgeoTypes.ARGEO_USER_HOME);
-                       userHome.setProperty(ARGEO_USER_ID, username);
-                       return userHome;
-               } catch (RepositoryException e) {
-                       throw new ArgeoException("Cannot create home node for user "
-                                       + username, e);
-               }
-       }
-
-       protected String usernameToHomePath(String username) {
-               return homeBasePath + '/' + JcrUtils.firstCharsToPath(username, 2)
-                               + '/' + username;
-       }
-
        public void mapUserToContext(UserDetails user, final DirContextAdapter ctx) {
                if (!(user instanceof JcrUserDetails))
                        throw new ArgeoException("Unsupported user details: "
@@ -165,7 +147,7 @@ public class JcrUserDetailsContextMapper implements UserDetailsContextMapper,
                        // repositoryFactory, ArgeoJcrConstants.ALIAS_NODE);
                        // session = nodeRepo.login();
                        Node userProfile = session.getNode(jcrUserDetails.getHomePath()
-                                       + '/' + ARGEO_USER_PROFILE);
+                                       + '/' + ARGEO_PROFILE);
                        for (String jcrProperty : propertyToAttributes.keySet())
                                jcrToLdap(userProfile, jcrProperty, ctx);
                        if (log.isDebugEnabled())