]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/internal/kernel/HomeRepository.java
Next development cycle
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / HomeRepository.java
index 237f16fb3df9e037bfea6d03c5fd46c2d44b1f1a..97407866f1d24d2b28a31ff96a6aff641a3e19b6 100644 (file)
@@ -14,14 +14,12 @@ import javax.naming.ldap.LdapName;
 import javax.security.auth.Subject;
 import javax.security.auth.login.LoginContext;
 
-import org.apache.jackrabbit.core.security.SecurityConstants;
 import org.argeo.cms.CmsException;
-import org.argeo.cms.auth.AuthConstants;
 import org.argeo.jcr.JcrRepositoryWrapper;
 import org.argeo.jcr.JcrUtils;
-import org.argeo.node.ArgeoNames;
-import org.argeo.node.ArgeoTypes;
 import org.argeo.node.NodeConstants;
+import org.argeo.node.NodeNames;
+import org.argeo.node.NodeTypes;
 import org.argeo.node.NodeUtils;
 
 /**
@@ -30,15 +28,16 @@ import org.argeo.node.NodeUtils;
 class HomeRepository extends JcrRepositoryWrapper implements KernelConstants {
        /** The home base path. */
        private String homeBasePath = "/home";
-       private String peopleBasePath = NodeConstants.PEOPLE_BASE_PATH;
+//     private String peopleBasePath = NodeConstants.PEOPLE_BASE_PATH;
 
        private Set<String> checkedUsers = new HashSet<String>();
 
        public HomeRepository(Repository repository) {
-               setRepository(repository);
+               super(repository);
+               putDescriptor(NodeConstants.CN, NodeConstants.HOME);
                LoginContext lc;
                try {
-                       lc = new LoginContext(AuthConstants.LOGIN_CONTEXT_DATA_ADMIN);
+                       lc = new LoginContext(NodeConstants.LOGIN_CONTEXT_DATA_ADMIN);
                        lc.login();
                } catch (javax.security.auth.login.LoginException e1) {
                        throw new CmsException("Cannot login as systrem", e1);
@@ -48,7 +47,8 @@ class HomeRepository extends JcrRepositoryWrapper implements KernelConstants {
                        @Override
                        public Void run() {
                                try {
-                                       initJcr(getRepository().login());
+                                       Session adminSession = getRepository().login();
+                                       initJcr(adminSession);
                                } catch (RepositoryException e) {
                                        throw new CmsException("Cannot init JCR home", e);
                                }
@@ -85,12 +85,12 @@ class HomeRepository extends JcrRepositoryWrapper implements KernelConstants {
                String username = session.getUserID();
                if (username == null)
                        return;
-               if (session.getUserID().equals(AuthConstants.ROLE_ANONYMOUS))
-                       return;
-               if (session.getUserID().equals(AuthConstants.ROLE_KERNEL))
-                       return;
-               if (session.getUserID().equals(SecurityConstants.ADMIN_ID))
+               if (session.getUserID().equals(NodeConstants.ROLE_ANONYMOUS))
                        return;
+//             if (session.getUserID().equals(AuthConstants.ROLE_KERNEL))
+//                     return;
+//             if (session.getUserID().equals(SecurityConstants.ADMIN_ID))
+//                     return;
 
                if (checkedUsers.contains(username))
                        return;
@@ -111,13 +111,13 @@ class HomeRepository extends JcrRepositoryWrapper implements KernelConstants {
        private void initJcr(Session adminSession) {
                try {
                        JcrUtils.mkdirs(adminSession, homeBasePath);
-                       JcrUtils.mkdirs(adminSession, peopleBasePath);
+//                     JcrUtils.mkdirs(adminSession, peopleBasePath);
                        adminSession.save();
 
                        JcrUtils.addPrivilege(adminSession, homeBasePath,
-                                       AuthConstants.ROLE_USER_ADMIN, Privilege.JCR_READ);
-                       JcrUtils.addPrivilege(adminSession, peopleBasePath,
-                                       AuthConstants.ROLE_USER_ADMIN, Privilege.JCR_ALL);
+                                       NodeConstants.ROLE_USER_ADMIN, Privilege.JCR_READ);
+//                     JcrUtils.addPrivilege(adminSession, peopleBasePath,
+//                                     NodeConstants.ROLE_USER_ADMIN, Privilege.JCR_ALL);
                        adminSession.save();
                } catch (RepositoryException e) {
                        throw new CmsException("Cannot initialize node user admin", e);
@@ -126,7 +126,7 @@ class HomeRepository extends JcrRepositoryWrapper implements KernelConstants {
                }
        }
 
-       private Node syncJcr(Session session, String username) {
+       private void syncJcr(Session session, String username) {
                try {
                        Node userHome = NodeUtils.getUserHome(session, username);
                        if (userHome == null) {
@@ -137,8 +137,8 @@ class HomeRepository extends JcrRepositoryWrapper implements KernelConstants {
                                else
                                        userHome = JcrUtils.mkdirs(session, homePath);
                                // userHome = JcrUtils.mkfolders(session, homePath);
-                               userHome.addMixin(ArgeoTypes.ARGEO_USER_HOME);
-                               userHome.setProperty(ArgeoNames.ARGEO_USER_ID, username);
+                               userHome.addMixin(NodeTypes.NODE_USER_HOME);
+                               userHome.setProperty(NodeNames.LDAP_UID, username);
                                session.save();
 
                                JcrUtils.clearAccessControList(session, homePath, username);
@@ -146,33 +146,33 @@ class HomeRepository extends JcrRepositoryWrapper implements KernelConstants {
                                                Privilege.JCR_ALL);
                        }
 
-                       Node userProfile = NodeUtils.getUserProfile(session, username);
-                       // new user
-                       if (userProfile == null) {
-                               String personPath = generateUserPath(peopleBasePath, username);
-                               Node personBase;
-                               if (session.itemExists(personPath))// duplicate user id
-                                       personBase = session.getNode(personPath).getParent()
-                                                       .addNode(JcrUtils.lastPathElement(personPath));
-                               else
-                                       personBase = JcrUtils.mkdirs(session, personPath);
-                               userProfile = personBase.addNode(ArgeoNames.ARGEO_PROFILE);
-                               userProfile.addMixin(ArgeoTypes.ARGEO_USER_PROFILE);
-                               userProfile.setProperty(ArgeoNames.ARGEO_USER_ID, username);
-                               // userProfile.setProperty(ArgeoNames.ARGEO_ENABLED, true);
-                               // userProfile.setProperty(ArgeoNames.ARGEO_ACCOUNT_NON_EXPIRED,
-                               // true);
-                               // userProfile.setProperty(ArgeoNames.ARGEO_ACCOUNT_NON_LOCKED,
-                               // true);
-                               // userProfile.setProperty(ArgeoNames.ARGEO_CREDENTIALS_NON_EXPIRED,
-                               // true);
-                               session.save();
-
-                               JcrUtils.clearAccessControList(session, userProfile.getPath(),
-                                               username);
-                               JcrUtils.addPrivilege(session, userProfile.getPath(), username,
-                                               Privilege.JCR_READ);
-                       }
+//                     Node userProfile = NodeUtils.getUserProfile(session, username);
+//                     // new user
+//                     if (userProfile == null) {
+//                             String personPath = generateUserPath(peopleBasePath, username);
+//                             Node personBase;
+//                             if (session.itemExists(personPath))// duplicate user id
+//                                     personBase = session.getNode(personPath).getParent()
+//                                                     .addNode(JcrUtils.lastPathElement(personPath));
+//                             else
+//                                     personBase = JcrUtils.mkdirs(session, personPath);
+//                             userProfile = personBase.addNode(ArgeoNames.ARGEO_PROFILE);
+//                             userProfile.addMixin(ArgeoTypes.ARGEO_USER_PROFILE);
+//                             userProfile.setProperty(ArgeoNames.ARGEO_USER_ID, username);
+//                             // userProfile.setProperty(ArgeoNames.ARGEO_ENABLED, true);
+//                             // userProfile.setProperty(ArgeoNames.ARGEO_ACCOUNT_NON_EXPIRED,
+//                             // true);
+//                             // userProfile.setProperty(ArgeoNames.ARGEO_ACCOUNT_NON_LOCKED,
+//                             // true);
+//                             // userProfile.setProperty(ArgeoNames.ARGEO_CREDENTIALS_NON_EXPIRED,
+//                             // true);
+//                             session.save();
+//
+//                             JcrUtils.clearAccessControList(session, userProfile.getPath(),
+//                                             username);
+//                             JcrUtils.addPrivilege(session, userProfile.getPath(), username,
+//                                             Privilege.JCR_READ);
+//                     }
 
                        // Remote roles
                        // if (roles != null) {
@@ -180,7 +180,7 @@ class HomeRepository extends JcrRepositoryWrapper implements KernelConstants {
                        // }
                        if (session.hasPendingChanges())
                                session.save();
-                       return userProfile;
+//                     return userProfile;
                } catch (RepositoryException e) {
                        JcrUtils.discardQuietly(session);
                        throw new CmsException("Cannot sync node security model for "