summaryrefslogtreecommitdiffstats
path: root/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java')
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java17
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;
}