fix: prevent write:groups from self-promoting

This commit is contained in:
NGPixel
2020-09-09 22:37:49 -04:00
parent f988c5f811
commit 7c0d6e2883
2 changed files with 110 additions and 12 deletions

View File

@@ -286,6 +286,34 @@ module.exports = {
return false
},
/**
* Check for exclusive permissions (contain any X permission(s) but not any Y permission(s))
*
* @param {User} user
* @param {Array<String>} includePermissions
* @param {Array<String>} excludePermissions
*/
checkExclusiveAccess(user, includePermissions = [], excludePermissions = []) {
const userPermissions = user.permissions ? user.permissions : user.getGlobalPermissions()
// System Admin
if (userPermissions.includes('manage:system')) {
return true
}
// Check Inclusion Permissions
if (_.intersection(userPermissions, includePermissions).length < 1) {
return false
}
// Check Exclusion Permissions
if (_.intersection(userPermissions, excludePermissions).length > 0) {
return false
}
return true
},
/**
* Check and apply Page Rule specificity
*