summaryrefslogtreecommitdiffstats
path: root/EssentialsGroupManager/src/org/anjocaido
diff options
context:
space:
mode:
Diffstat (limited to 'EssentialsGroupManager/src/org/anjocaido')
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java4
-rw-r--r--EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java39
2 files changed, 32 insertions, 11 deletions
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java
index 24a70d465..ee5d04490 100644
--- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java
+++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java
@@ -972,6 +972,8 @@ public class GroupManager extends JavaPlugin {
if (permissionResult.owner instanceof User) {
if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) {
sender.sendMessage(ChatColor.YELLOW + "The user has directly a negation node for that permission.");
+ } else if (permissionResult.resultType.equals(PermissionCheckResult.Type.EXCEPTION)) {
+ sender.sendMessage(ChatColor.YELLOW + "The user has directly an Exception node for that permission.");
} else {
sender.sendMessage(ChatColor.YELLOW + "The user has directly this permission.");
}
@@ -979,6 +981,8 @@ public class GroupManager extends JavaPlugin {
} else if (permissionResult.owner instanceof Group) {
if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) {
sender.sendMessage(ChatColor.YELLOW + "The user inherits a negation permission from group: " + permissionResult.owner.getName());
+ } else if (permissionResult.resultType.equals(PermissionCheckResult.Type.EXCEPTION)) {
+ sender.sendMessage(ChatColor.YELLOW + "The user inherits an Exception permission from group: " + permissionResult.owner.getName());
} else {
sender.sendMessage(ChatColor.YELLOW + "The user inherits the permission from group: " + permissionResult.owner.getName());
}
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java
index 8f8f4c599..6eda3f1cc 100644
--- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java
+++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java
@@ -898,32 +898,49 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
PermissionCheckResult resultUser = checkUserOnlyPermission(user, targetPermission);
if (resultUser.resultType != PermissionCheckResult.Type.NOTFOUND) {
+
resultUser.accessLevel = targetPermission;
- return resultUser;
+
+ if (resultUser.resultType == PermissionCheckResult.Type.EXCEPTION) {
+ return resultUser;
+ }
+
+ result = resultUser;
+
}
- // IT ONLY CHECKS GROUPS PERMISSIONS IF RESULT FOR USER IS NOT FOUND
+ // IT ONLY CHECKS GROUPS PERMISSIONS IF RESULT FOR USER IS NOT AN EXCEPTION
PermissionCheckResult resultGroup = checkGroupPermissionWithInheritance(user.getGroup(), targetPermission);
if (resultGroup.resultType != PermissionCheckResult.Type.NOTFOUND) {
+
resultGroup.accessLevel = targetPermission;
- return resultGroup;
+
+ if (resultGroup.resultType == PermissionCheckResult.Type.EXCEPTION) {
+ return resultGroup;
+ }
+
+ result = resultGroup;
+
}
// SUBGROUPS CHECK
for (Group subGroup : user.subGroupListCopy()) {
- PermissionCheckResult resultSubGroup = checkGroupPermissionWithInheritance(subGroup, targetPermission);
-
+ PermissionCheckResult resultSubGroup = checkGroupPermissionWithInheritance(subGroup, targetPermission);
if (resultSubGroup.resultType != PermissionCheckResult.Type.NOTFOUND) {
- 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;
+ resultSubGroup.accessLevel = targetPermission;
+
+ if (resultSubGroup.resultType == PermissionCheckResult.Type.EXCEPTION) {
+
return resultSubGroup;
+
+ } else if ((resultSubGroup.resultType == PermissionCheckResult.Type.FOUND) && (result.resultType != PermissionCheckResult.Type.NEGATION)) {
+
+ result = resultSubGroup;
+
} else if (resultSubGroup.resultType == PermissionCheckResult.Type.NEGATION) {
- resultSubGroup.accessLevel = targetPermission;
+
result = resultSubGroup;
}