mirror of
https://github.com/TotalFreedomMC/TF-EssentialsX.git
synced 2025-02-15 21:39:21 +00:00
Do not override higher level permissions with negations.
This commit is contained in:
parent
81c6291338
commit
a0e93af758
1 changed files with 11 additions and 3 deletions
|
@ -919,9 +919,15 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
|
||||||
return resultGroup;
|
return resultGroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = resultGroup;
|
// Do not override higher level permissions with negations.
|
||||||
|
if (result.resultType == PermissionCheckResult.Type.NOTFOUND) {
|
||||||
|
result = resultGroup;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Do we have a high level negation?
|
||||||
|
boolean negated = (result.resultType == PermissionCheckResult.Type.NEGATION);
|
||||||
|
|
||||||
// SUBGROUPS CHECK
|
// SUBGROUPS CHECK
|
||||||
for (Group subGroup : user.subGroupListCopy()) {
|
for (Group subGroup : user.subGroupListCopy()) {
|
||||||
|
@ -931,15 +937,17 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface {
|
||||||
|
|
||||||
resultSubGroup.accessLevel = targetPermission;
|
resultSubGroup.accessLevel = targetPermission;
|
||||||
|
|
||||||
|
// Allow exceptions to override higher level negations
|
||||||
|
// but low level negations can not remove higher level permissions.
|
||||||
if (resultSubGroup.resultType == PermissionCheckResult.Type.EXCEPTION) {
|
if (resultSubGroup.resultType == PermissionCheckResult.Type.EXCEPTION) {
|
||||||
|
|
||||||
return resultSubGroup;
|
return resultSubGroup;
|
||||||
|
|
||||||
} else if ((resultSubGroup.resultType == PermissionCheckResult.Type.FOUND) && (result.resultType != PermissionCheckResult.Type.NEGATION)) {
|
} else if ((resultSubGroup.resultType == PermissionCheckResult.Type.FOUND) && (result.resultType != PermissionCheckResult.Type.NEGATION) && !negated) {
|
||||||
|
|
||||||
result = resultSubGroup;
|
result = resultSubGroup;
|
||||||
|
|
||||||
} else if (resultSubGroup.resultType == PermissionCheckResult.Type.NEGATION) {
|
} else if ((resultSubGroup.resultType == PermissionCheckResult.Type.NEGATION) && !negated) {
|
||||||
|
|
||||||
result = resultSubGroup;
|
result = resultSubGroup;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue