Introduce user and session nodes.
[gpl/argeo-suite.git] / org.argeo.suite.core / src / org / argeo / suite / core / SuiteMaintenanceService.java
index 91f20433c5379fc8c24fe7084a48fe7c246df5d0..db6ac913422a5118db5428dbef8fa0b6966ef5bd 100644 (file)
@@ -2,9 +2,15 @@ package org.argeo.suite.core;
 
 import java.io.IOException;
 
+import javax.jcr.Node;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
+import javax.jcr.nodetype.NodeType;
+import javax.jcr.security.Privilege;
 
+import org.argeo.api.NodeConstants;
+import org.argeo.entity.EntityType;
+import org.argeo.jcr.JcrUtils;
 import org.argeo.maintenance.AbstractMaintenanceService;
 
 /** Initialises an Argeo Suite backend. */
@@ -13,14 +19,20 @@ public class SuiteMaintenanceService extends AbstractMaintenanceService {
        @Override
        public boolean prepareJcrTree(Session adminSession) throws RepositoryException, IOException {
                boolean modified = false;
-//             Node rootNode = adminSession.getRootNode();
-//             if (!rootNode.hasNode(EntityNames.TERM)) {
-//                     rootNode.addNode(EntityNames.TERM, EntityType.typologies.get());
-//                     modified = true;
-//             }
-//             if (modified)
-//                     adminSession.save();
+               Node rootNode = adminSession.getRootNode();
+               if (!rootNode.hasNode(EntityType.user.name())) {
+                       rootNode.addNode(EntityType.user.name(), NodeType.NT_UNSTRUCTURED);
+                       modified = true;
+               }
+               if (modified)
+                       adminSession.save();
                return modified;
        }
 
+       @Override
+       public void configurePrivileges(Session adminSession) throws RepositoryException {
+               JcrUtils.addPrivilege(adminSession, EntityType.user.basePath(), NodeConstants.ROLE_USER_ADMIN,
+                               Privilege.JCR_ALL);
+       }
+
 }