1 package org.argeo.people.core;
2
3 import java.util.EnumSet;
4 import java.util.List;
5
6 import javax.jcr.RepositoryException;
7 import javax.jcr.Session;
8 import javax.jcr.security.Privilege;
9
10 import org.argeo.connect.ConnectException;
11 import org.argeo.connect.core.AbstractMaintenanceService;
12 import org.argeo.jcr.JcrUtils;
13 import org.argeo.people.PeopleConstants;
14 import org.argeo.people.PeopleRole;
15
16
17
18
19 public class PeopleMaintenanceService extends AbstractMaintenanceService {
20 @Override
21 public List<String> getRequiredRoles() {
22 return enumToDns(EnumSet.allOf(PeopleRole.class));
23 }
24
25 @Override
26 protected void addOfficeGroups() {
27 addManagersToGroup(PeopleRole.editor.dn());
28 addCoworkersToGroup(PeopleRole.reader.dn());
29 }
30
31 @Override
32 public boolean prepareJcrTree(Session session) {
33 try {
34 boolean hasChanged = false;
35 JcrUtils.mkdirs(session, getDefaultBasePath());
36 if (session.hasPendingChanges()) {
37 session.save();
38 hasChanged = true;
39 }
40 return hasChanged;
41 } catch (RepositoryException e) {
42 JcrUtils.discardQuietly(session);
43 throw new ConnectException("Cannot create base nodes for Activities app", e);
44 }
45 }
46
47 @Override
48 public void configurePrivileges(Session session) {
49 try {
50 JcrUtils.addPrivilege(session, getDefaultBasePath(), PeopleRole.editor.dn(), Privilege.JCR_ALL);
51 JcrUtils.addPrivilege(session, getDefaultBasePath(), PeopleRole.reader.dn(), Privilege.JCR_READ);
52 session.save();
53 } catch (RepositoryException e) {
54 JcrUtils.discardQuietly(session);
55 throw new ConnectException("Cannot configure JCR privileges for Resources app", e);
56 }
57 }
58
59 public String getDefaultBasePath() {
60 return "/" + PeopleConstants.PEOPLE_APP_BASE_NAME;
61 }
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121 }