X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.app.jcr%2Fsrc%2Forg%2Fargeo%2Finternal%2Fapp%2Fjcr%2FSuiteMaintenanceService.java;fp=org.argeo.app.jcr%2Fsrc%2Forg%2Fargeo%2Finternal%2Fapp%2Fjcr%2FSuiteMaintenanceService.java;h=ceeb4f5b1519ae9b564ca918c31b435a3bc3942b;hb=d6c9d33b61e475914d3f8d7534374ed30eca8150;hp=0000000000000000000000000000000000000000;hpb=618968cf9d259ccded45a9455a26c516dbfe828f;p=gpl%2Fargeo-suite.git diff --git a/org.argeo.app.jcr/src/org/argeo/internal/app/jcr/SuiteMaintenanceService.java b/org.argeo.app.jcr/src/org/argeo/internal/app/jcr/SuiteMaintenanceService.java new file mode 100644 index 0000000..ceeb4f5 --- /dev/null +++ b/org.argeo.app.jcr/src/org/argeo/internal/app/jcr/SuiteMaintenanceService.java @@ -0,0 +1,39 @@ +package org.argeo.internal.app.jcr; + +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.cms.CmsConstants; +import org.argeo.app.api.EntityType; +import org.argeo.jcr.JcrUtils; +import org.argeo.maintenance.AbstractMaintenanceService; + +/** Initialises JCR in an Argeo Suite backend. */ +public class SuiteMaintenanceService extends AbstractMaintenanceService { + @Override + public boolean prepareJcrTree(Session adminSession) throws RepositoryException, IOException { + boolean modified = false; + 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(), CmsConstants.ROLE_USER_ADMIN, + Privilege.JCR_ALL); + // JcrUtils.addPrivilege(adminSession, "/", SuiteRole.coworker.dn(), + // Privilege.JCR_READ); + } + +}