]> git.argeo.org Git - gpl/argeo-suite.git/blob - SuiteMaintenanceService.java
298f96bc3e2569a252be8a6bc83219b2eb8847cd
[gpl/argeo-suite.git] / SuiteMaintenanceService.java
1 package org.argeo.app.core;
2
3 import java.io.IOException;
4
5 import javax.jcr.Node;
6 import javax.jcr.RepositoryException;
7 import javax.jcr.Session;
8 import javax.jcr.nodetype.NodeType;
9 import javax.jcr.security.Privilege;
10
11 import org.argeo.api.acr.spi.ProvidedRepository;
12 import org.argeo.api.cms.CmsConstants;
13 import org.argeo.app.api.EntityType;
14 import org.argeo.jcr.JcrUtils;
15 import org.argeo.maintenance.AbstractMaintenanceService;
16
17 /** Initialises an Argeo Suite backend. */
18 public class SuiteMaintenanceService extends AbstractMaintenanceService {
19 private ProvidedRepository contentRepository;
20
21 @Override
22 public void init() {
23 super.init();
24
25 for (SuiteContentTypes types : SuiteContentTypes.values()) {
26 contentRepository.registerTypes(types.getDefaultPrefix(), types.getNamespace(),
27 types.getResource() != null ? types.getResource().toExternalForm() : null);
28 }
29 }
30
31 @Override
32 public boolean prepareJcrTree(Session adminSession) throws RepositoryException, IOException {
33 boolean modified = false;
34 Node rootNode = adminSession.getRootNode();
35 if (!rootNode.hasNode(EntityType.user.name())) {
36 rootNode.addNode(EntityType.user.name(), NodeType.NT_UNSTRUCTURED);
37 modified = true;
38 }
39 if (modified)
40 adminSession.save();
41 return modified;
42 }
43
44 @Override
45 public void configurePrivileges(Session adminSession) throws RepositoryException {
46 JcrUtils.addPrivilege(adminSession, EntityType.user.basePath(), CmsConstants.ROLE_USER_ADMIN,
47 Privilege.JCR_ALL);
48 // JcrUtils.addPrivilege(adminSession, "/", SuiteRole.coworker.dn(),
49 // Privilege.JCR_READ);
50 }
51
52 public void setContentRepository(ProvidedRepository contentRepository) {
53 this.contentRepository = contentRepository;
54 }
55
56 }