From 9909ffe92c610ec23fcf72255328c747cd69972c Mon Sep 17 00:00:00 2001 From: AlexTheCoder Date: Wed, 5 Sep 2018 03:29:44 -0500 Subject: [PATCH] Patch an issue preventing perms from properly being inherited --- .../account/permissions/PermissionGroup.java | 30 +++++-------------- 1 file changed, 7 insertions(+), 23 deletions(-) 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