1
1
package com .merkle .oss .magnolia .setup .task .common .security .util ;
2
2
3
- import info .magnolia .cms .security .AccessDeniedException ;
4
3
import info .magnolia .cms .security .Group ;
5
4
import info .magnolia .cms .security .GroupManager ;
6
5
import info .magnolia .cms .security .SecuritySupport ;
7
6
8
- import java .lang .invoke .MethodHandles ;
9
7
import java .util .Arrays ;
8
+ import java .util .Collection ;
10
9
import java .util .Optional ;
11
10
import java .util .Set ;
12
11
import java .util .function .Supplier ;
13
12
import java .util .stream .Collectors ;
14
13
14
+ import javax .annotation .Nullable ;
15
15
import javax .inject .Inject ;
16
16
17
- import org .slf4j .Logger ;
18
- import org .slf4j .LoggerFactory ;
17
+ import com .machinezoo .noexception .Exceptions ;
19
18
20
19
public class GroupManagerUtil {
21
- private static final Logger LOG = LoggerFactory .getLogger (MethodHandles .lookup ().lookupClass ());
22
20
private final Supplier <GroupManager > groupManager ;
23
21
24
22
@ Inject
@@ -34,11 +32,52 @@ public Set<Group> getGroups(final String... groupNames) {
34
32
}
35
33
36
34
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 );
42
42
}
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 ));
43
82
}
44
83
}
0 commit comments