summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--EssentialsGroupManager/src/Changelog.txt3
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java8
2 files changed, 8 insertions, 3 deletions
diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt
index 5155d6181..224f2763c 100644
--- a/EssentialsGroupManager/src/Changelog.txt
+++ b/EssentialsGroupManager/src/Changelog.txt
@@ -122,4 +122,5 @@ v 1.9:
- Fixed subgroups (I broke earlier).
- Check for a null player object in the PlayerTeleportEvent.
- Trap errors in fetching the mirrors map.
- - Fixed an infinite loop error when using '/manudel' on a logged in player. It caused setDefaultGroup to trigger a bukkit update when no GM User existed yet. \ No newline at end of file
+ - Fixed an infinite loop error when using '/manudel' on a logged in player. It caused setDefaultGroup to trigger a bukkit update when no GM User existed yet.
+ - do not allow inherited permissions to negate higher perms. \ No newline at end of file
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java
index de42ce9c3..429a9553f 100644
--- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java
+++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java
@@ -135,9 +135,13 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
}
// Add all group permissions, unless negated by direct player perms.
- for (String perm : groupPermArray)
- if ((!playerPermArray.contains(perm)) && (!playerPermArray.contains("-" + perm)))
+ for (String perm : groupPermArray) {
+ // 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)))))
playerPermArray.add(perm);
+ }
}
// Collections.sort(playerPermArray,