From 7695c9f5c70380623868ce60900c87f7d75327a5 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Fri, 27 Jan 2012 13:09:11 +0000 Subject: Properly fix inherited negated nodes. --- .../groupmanager/permissions/AnjoPermissionsHandler.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'EssentialsGroupManager/src/org') diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java index 429a9553f..002558968 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java @@ -134,12 +134,13 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { groupPermArray = populatePerms(ph.getGroup(group).getPermissionList(), includeChildren); } - // Add all group permissions, unless negated by direct player perms. + // Add all group permissions, unless negated by earlier permissions. for (String perm : groupPermArray) { + boolean negated = (perm.startsWith("-")); // Perm doesn't already exists and there is no negation for it - // It's not a negated perm where a normal perm exists (don't allow inheritance to negate higher perms) - if ((!playerPermArray.contains(perm)) && (!playerPermArray.contains("-" + perm)) - && (!perm.startsWith("-") && (!playerPermArray.contains(perm.substring(1))))) + // or It's a negated perm where a normal perm doesn't exists (don't allow inheritance to negate higher perms) + if ((!negated && !playerPermArray.contains(perm) && !playerPermArray.contains("-" + perm)) + || (negated && !playerPermArray.contains(perm.substring(1)))) playerPermArray.add(perm); } -- cgit v1.2.3