diff --git a/Plugins/Mineplex.Core/src/mineplex/core/account/permissions/PermissionGroup.java b/Plugins/Mineplex.Core/src/mineplex/core/account/permissions/PermissionGroup.java index 23f2c084b..5336a18e7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/account/permissions/PermissionGroup.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/account/permissions/PermissionGroup.java @@ -63,13 +63,13 @@ public enum PermissionGroup static { - MutableGraph _builder = GraphBuilder.directed().build(); + MutableGraph builder = GraphBuilder.directed().build(); // Add each group as a node, and add edges between parent (inherited) and child nodes - Stream.of(PermissionGroup.values()).peek(_builder::addNode).forEach(group -> - group._parentGroups.forEach(parent -> _builder.putEdge(parent, group))); + Stream.of(PermissionGroup.values()).peek(builder::addNode).forEach(group -> + group._parentGroups.forEach(parent -> builder.putEdge(parent, group))); - _groupHierarchy = ImmutableGraph.copyOf(_builder); + _groupHierarchy = ImmutableGraph.copyOf(builder); } // We want a graph so we can walk the hierarchy downward and recalculate permissions when needed @@ -144,25 +144,9 @@ public enum PermissionGroup private void bakePermissions() { - // Calculate inherited permissions - Map inherited = calculateInheritable(); - - // Now: walk down the group hierarchy and bake permissions - bakeForward(inherited); - } - - private void bakeForward(Map inherited) - { - _bakedPerms = new IdentityHashMap<>(); - _bakedPerms.putAll(inherited); - _bakedPerms.putAll(_specificPerms); // Specific permissions override inheritable ones - - _groupHierarchy.successors(this).forEach(successor -> - { - Map newInherited = new IdentityHashMap<>(inherited); - newInherited.putAll(successor._inheritablePerms); - successor.bakeForward(newInherited); - }); + _bakedPerms = calculateInheritable(); + _bakedPerms.putAll(_specificPerms); + _groupHierarchy.successors(this).forEach(PermissionGroup::bakePermissions); } // Calculate inheritable permissions from parent nodes and this node