1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.module.templatingkit.setup;
35
36 import info.magnolia.jcr.util.NodeTypes;
37 import info.magnolia.jcr.util.NodeUtil;
38 import info.magnolia.module.InstallContext;
39 import info.magnolia.module.delta.AbstractRepositoryTask;
40 import info.magnolia.module.delta.TaskExecutionException;
41 import info.magnolia.repository.RepositoryConstants;
42
43 import java.util.Arrays;
44 import java.util.List;
45
46 import javax.jcr.Node;
47 import javax.jcr.RepositoryException;
48 import javax.jcr.Session;
49
50 import org.apache.commons.collections4.ListUtils;
51
52
53
54
55 public class AddSTKRolesToRelevantAppsTask extends AbstractRepositoryTask {
56
57 private List<PermissionMapping> eePermissionMapping;
58
59 private List<PermissionMapping> cePermissionMapping;
60
61 public AddSTKRolesToRelevantAppsTask() {
62 super("Add STK roles to apps", "Re-add roles to relevant apps so STK users can use them");
63
64 eePermissionMapping = Arrays.asList(
65 new PermissionMapping("/modules/dam-app/apps/assets/permissions/roles", "demo-project-base", "demo-project-base"),
66 new PermissionMapping("/modules/pages/apps/pages/subApps/browser/actions/activate/availability/access/roles", "demo-publisher", "demo-project-publisher"),
67 new PermissionMapping("/modules/categorization/apps/categories/permissions/roles", "demo-project-base", "demo-project-base")
68 );
69 cePermissionMapping = ListUtils.union(Arrays.asList(
70 new PermissionMapping("/modules/pages/apps/pages/subApps/browser/actions/activateRecursive/availability/access/roles", "demo-publisher", "demo-project-publisher"),
71 new PermissionMapping("/modules/pages/apps/pages/subApps/browser/actions/deactivate/availability/access/roles", "demo-publisher", "demo-project-publisher"),
72 new PermissionMapping("/modules/pages/apps/pages/subApps/browser/actions/activateDeletion/availability/access/roles", "demo-publisher", "demo-project-publisher")),
73 eePermissionMapping
74 );
75 }
76
77 @Override
78 protected void doExecute(InstallContext installContext) throws RepositoryException, TaskExecutionException {
79 Session session = installContext.getJCRSession(RepositoryConstants.CONFIG);
80
81
82 List<PermissionMapping> mappings;
83 if (installContext.isModuleRegistered("enterprise")) {
84 mappings = eePermissionMapping;
85 } else {
86 mappings = cePermissionMapping;
87 }
88
89 for (PermissionMapping mapping : mappings) {
90 String path = mapping.getPath();
91 String name = mapping.getPropertyName();
92 String permission = mapping.getPropertyValue();
93
94 Node node = NodeUtil.createPath(session.getRootNode(), path, NodeTypes.ContentNode.NAME);
95
96 if (!node.hasProperty(name)) {
97 node.setProperty(name, permission);
98 } else {
99 installContext.info(String.format("Permissions for [%s] already exists, no action will be taken.", path));
100 }
101 }
102 }
103
104 private class PermissionMapping {
105
106 private final String path;
107 private final String propertyName;
108 private final String propertyValue;
109
110 public PermissionMapping(String path, String propertyName, String propertyValue) {
111 this.path = path;
112 this.propertyName = propertyName;
113 this.propertyValue = propertyValue;
114 }
115
116 public String getPath() {
117 return path;
118 }
119
120 public String getPropertyName() {
121 return propertyName;
122 }
123
124 public String getPropertyValue() {
125 return propertyValue;
126 }
127 }
128 }