diff options
author | ElgarL <ElgarL@Palmergames.com> | 2013-05-22 10:37:24 +0100 |
---|---|---|
committer | KHobbits <rob@khobbits.co.uk> | 2014-05-04 12:50:02 +0100 |
commit | 395655ba19a3a2e2b348a19348d2de2efaf12b4b (patch) | |
tree | d17860b2cc1cd9e2433f14586d3ddce6647bd6c8 /EssentialsGroupManager/src/org/anjocaido | |
parent | 1bb569fff2846478138a8b4af458c425799c94d2 (diff) | |
download | Essentials-395655ba19a3a2e2b348a19348d2de2efaf12b4b.tar Essentials-395655ba19a3a2e2b348a19348d2de2efaf12b4b.tar.gz Essentials-395655ba19a3a2e2b348a19348d2de2efaf12b4b.tar.lz Essentials-395655ba19a3a2e2b348a19348d2de2efaf12b4b.tar.xz Essentials-395655ba19a3a2e2b348a19348d2de2efaf12b4b.zip |
Check subgroup permissions with an equal priority so no one subgroup is higher ranked than another.
Diffstat (limited to 'EssentialsGroupManager/src/org/anjocaido')
-rw-r--r-- | EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java index bef2fb713..3a6adee2e 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java @@ -849,13 +849,26 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { // SUBGROUPS CHECK for (Group subGroup : user.subGroupListCopy()) { PermissionCheckResult resultSubGroup = checkGroupPermissionWithInheritance(subGroup, targetPermission); + + if (resultSubGroup.resultType != PermissionCheckResult.Type.NOTFOUND) { - resultSubGroup.accessLevel = targetPermission; - return resultSubGroup; + + if ((resultSubGroup.resultType == PermissionCheckResult.Type.FOUND) && (result.resultType != PermissionCheckResult.Type.NEGATION)) { + resultSubGroup.accessLevel = targetPermission; + result = resultSubGroup; + } else if (resultSubGroup.resultType == PermissionCheckResult.Type.EXCEPTION) { + resultSubGroup.accessLevel = targetPermission; + return resultSubGroup; + } else if (resultSubGroup.resultType == PermissionCheckResult.Type.NEGATION) { + resultSubGroup.accessLevel = targetPermission; + result = resultSubGroup; + } + } } // THEN IT RETURNS A NOT FOUND + // OR THE RESULT OF THE SUBGROUP SEARCH. return result; } |