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.owner instanceof User) {
if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) { if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) {
sender.sendMessage(ChatColor.YELLOW + "The user has directly a negation node for that permission."); 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 { } else {
sender.sendMessage(ChatColor.YELLOW + "The user has directly this permission."); 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) { } else if (permissionResult.owner instanceof Group) {
if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) { if (permissionResult.resultType.equals(PermissionCheckResult.Type.NEGATION)) {
sender.sendMessage(ChatColor.YELLOW + "The user inherits a negation permission from group: " + permissionResult.owner.getName()); 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 { } else {
sender.sendMessage(ChatColor.YELLOW + "The user inherits the permission from group: " + permissionResult.owner.getName()); 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); PermissionCheckResult resultUser = checkUserOnlyPermission(user, targetPermission);
if (resultUser.resultType != PermissionCheckResult.Type.NOTFOUND) { if (resultUser.resultType != PermissionCheckResult.Type.NOTFOUND) {
resultUser.accessLevel = targetPermission; 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); PermissionCheckResult resultGroup = checkGroupPermissionWithInheritance(user.getGroup(), targetPermission);
if (resultGroup.resultType != PermissionCheckResult.Type.NOTFOUND) { if (resultGroup.resultType != PermissionCheckResult.Type.NOTFOUND) {
resultGroup.accessLevel = targetPermission; resultGroup.accessLevel = targetPermission;
return resultGroup;
if (resultGroup.resultType == PermissionCheckResult.Type.EXCEPTION) {
return resultGroup;
}
result = resultGroup;
} }
// SUBGROUPS CHECK // SUBGROUPS CHECK
for (Group subGroup : user.subGroupListCopy()) { 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.NOTFOUND) {
if ((resultSubGroup.resultType == PermissionCheckResult.Type.FOUND) && (result.resultType != PermissionCheckResult.Type.NEGATION)) { resultSubGroup.accessLevel = targetPermission;
resultSubGroup.accessLevel = targetPermission;
result = resultSubGroup; if (resultSubGroup.resultType == PermissionCheckResult.Type.EXCEPTION) {
} else if (resultSubGroup.resultType == PermissionCheckResult.Type.EXCEPTION) {
resultSubGroup.accessLevel = targetPermission;
return resultSubGroup; return resultSubGroup;
} else if ((resultSubGroup.resultType == PermissionCheckResult.Type.FOUND) && (result.resultType != PermissionCheckResult.Type.NEGATION)) {
result = resultSubGroup;
} else if (resultSubGroup.resultType == PermissionCheckResult.Type.NEGATION) { } else if (resultSubGroup.resultType == PermissionCheckResult.Type.NEGATION) {
resultSubGroup.accessLevel = targetPermission;
result = resultSubGroup; result = resultSubGroup;
} }