Fix manucheckp to understand and report correctly on Exception nodes.

This commit is contained in:
ElgarL 2014-03-27 03:48:20 +00:00 committed by KHobbits
parent 92bb4e0e66
commit f0947e9a7c
2 changed files with 32 additions and 11 deletions

View File

@ -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());
}

View File

@ -898,32 +898,49 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
PermissionCheckResult resultUser = checkUserOnlyPermission(user, targetPermission);
if (resultUser.resultType != PermissionCheckResult.Type.NOTFOUND) {
resultUser.accessLevel = targetPermission;
if (resultUser.resultType == PermissionCheckResult.Type.EXCEPTION) {
return resultUser;
}
// IT ONLY CHECKS GROUPS PERMISSIONS IF RESULT FOR USER IS NOT FOUND
result = resultUser;
}
// 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;
if (resultGroup.resultType == PermissionCheckResult.Type.EXCEPTION) {
return resultGroup;
}
result = resultGroup;
}
// SUBGROUPS CHECK
for (Group subGroup : user.subGroupListCopy()) {
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;
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;
}