Skip to content

Commit 221a6b8

Browse files
author
eschleb
committed
Implement GroupManagerUtil group modify methods
1 parent 17db109 commit 221a6b8

File tree

1 file changed

+49
-10
lines changed

1 file changed

+49
-10
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,22 @@
11
package com.merkle.oss.magnolia.setup.task.common.security.util;
22

3-
import info.magnolia.cms.security.AccessDeniedException;
43
import info.magnolia.cms.security.Group;
54
import info.magnolia.cms.security.GroupManager;
65
import info.magnolia.cms.security.SecuritySupport;
76

8-
import java.lang.invoke.MethodHandles;
97
import java.util.Arrays;
8+
import java.util.Collection;
109
import java.util.Optional;
1110
import java.util.Set;
1211
import java.util.function.Supplier;
1312
import java.util.stream.Collectors;
1413

14+
import javax.annotation.Nullable;
1515
import javax.inject.Inject;
1616

17-
import org.slf4j.Logger;
18-
import org.slf4j.LoggerFactory;
17+
import com.machinezoo.noexception.Exceptions;
1918

2019
public class GroupManagerUtil {
21-
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
2220
private final Supplier<GroupManager> groupManager;
2321

2422
@Inject
@@ -34,11 +32,52 @@ public Set<Group> getGroups(final String... groupNames) {
3432
}
3533

3634
public Optional<Group> getGroup(final String groupName) {
37-
try {
38-
return Optional.ofNullable(groupManager.get().getGroup(groupName));
39-
} catch (AccessDeniedException e) {
40-
LOG.error("Access denied to get group " + groupName, e);
41-
return Optional.empty();
35+
return Optional.ofNullable(Exceptions.wrap().get(() -> groupManager.get().getGroup(groupName)));
36+
}
37+
38+
public Group getOrCreateGroup(final String name) throws Exception {
39+
@Nullable final Group group = getGroup(name).orElse(null);
40+
if (group == null) {
41+
return groupManager.get().createGroup(name);
4242
}
43+
return group;
44+
}
45+
46+
public void setRoles(final Group group, final Set<String> roleNames) {
47+
removeRoles(group, group.getRoles());
48+
roleNames.forEach(roleName ->
49+
addRole(group, roleName)
50+
);
51+
}
52+
public void addRole(final Group group, final String roleName) {
53+
Exceptions.wrap().run(() -> groupManager.get().addRole(group, roleName));
54+
}
55+
56+
public void removeRoles(final Group group, final Collection<String> roleNames) {
57+
roleNames.forEach(role ->
58+
removeRole(group, role)
59+
);
60+
}
61+
public void removeRole(final Group group, final String roleName) {
62+
Exceptions.wrap().run(() -> groupManager.get().removeRole(group, roleName));
63+
}
64+
65+
public void setGroups(final Group group, final Set<String> groupNames) {
66+
removeRoles(group, group.getRoles());
67+
groupNames.forEach(groupName ->
68+
addGroup(group, groupName)
69+
);
70+
}
71+
public void addGroup(final Group group, final String groupName) {
72+
Exceptions.wrap().run(() -> groupManager.get().addGroup(group, groupName));
73+
}
74+
75+
public void removeGroups(final Group group, final Collection<String> groupNames) {
76+
groupNames.forEach(groupName ->
77+
removeGroup(group, groupName)
78+
);
79+
}
80+
public void removeGroup(final Group group, final String groupName) {
81+
Exceptions.wrap().run(() -> groupManager.get().removeGroup(group, groupName));
4382
}
4483
}

0 commit comments

Comments
 (0)