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.demoproject.setup;
35
36 import info.magnolia.cms.security.Group;
37 import info.magnolia.cms.security.GroupManager;
38 import info.magnolia.cms.security.SecuritySupport;
39 import info.magnolia.jcr.wrapper.JCRMgnlPropertiesFilteringNodeWrapper;
40 import info.magnolia.module.InstallContext;
41 import info.magnolia.module.delta.AbstractRepositoryTask;
42 import info.magnolia.module.delta.TaskExecutionException;
43 import info.magnolia.repository.RepositoryConstants;
44
45 import java.util.LinkedList;
46 import java.util.List;
47
48 import javax.jcr.Node;
49 import javax.jcr.Property;
50 import javax.jcr.PropertyIterator;
51 import javax.jcr.RepositoryException;
52 import javax.jcr.Session;
53
54
55
56
57
58 public class RemoveLegacyGroupReferenceTask extends AbstractRepositoryTask {
59
60
61 final private String PUBLISHER_GROUPS_PATH = "/demo-project-publishers/groups";
62 static final public String PUBLISHER_NEW_UUID = "14540bfe-4e6f-4920-88d5-534d16156ca3";
63 static final public String PUBLISHER_LEGACY_UUID = "ea7603eb-fa77-4a81-97e4-906f6da22588";
64
65 final private List<String> PUBLISHER_UUIDs = new LinkedList<String>() {{
66 add(PUBLISHER_NEW_UUID);
67 add(PUBLISHER_LEGACY_UUID);
68 }};
69
70 private SecuritySupport securitySupport;
71
72 public RemoveLegacyGroupReferenceTask(SecuritySupport securitySupport) {
73 super("Remove group reference", "Remove legacy group reference from demo-project-publishers");
74 this.securitySupport = securitySupport;
75 }
76
77 @Override
78 protected void doExecute(InstallContext installContext) throws RepositoryException, TaskExecutionException {
79 GroupManager groupManager = securitySupport.getGroupManager();
80 Group group = groupManager.getGroup("publishers");
81 if (group == null) {
82 return;
83 }
84
85 Session session = installContext.getJCRSession(RepositoryConstants.USER_GROUPS);
86 if (session.itemExists(PUBLISHER_GROUPS_PATH)) {
87 Node groupsNode = new JCRMgnlPropertiesFilteringNodeWrapper(session.getNode(PUBLISHER_GROUPS_PATH));
88
89 PropertyIterator it = groupsNode.getProperties();
90 while (it.hasNext()) {
91 Property groupProperty = it.nextProperty();
92 String uuid = groupProperty.getValue().getString();
93 if (PUBLISHER_UUIDs.contains(uuid) && !uuid.equals(group.getId())) {
94 groupProperty.remove();
95 }
96 }
97 }
98 }
99 }
100