@ -361,7 +361,6 @@ exports.userHasPermission = async function(user_uid, permission) {
logger . error ( 'Invalid role ' + role ) ;
return false ;
}
const role _permissions = ( await db _api . getRecords ( 'roles' ) ) [ 'permissions' ] ;
const user _has _explicit _permission = user _obj [ 'permissions' ] . includes ( permission ) ;
const permission _in _overrides = user _obj [ 'permission_overrides' ] . includes ( permission ) ;
@ -376,7 +375,8 @@ exports.userHasPermission = async function(user_uid, permission) {
}
// no overrides, let's check if the role has the permission
if ( role _permissions . includes ( permission ) ) {
const role _has _permission = await exports . roleHasPermissions ( role , permission ) ;
if ( role _has _permission ) {
return true ;
} else {
logger . verbose ( ` User ${ user _uid } failed to get permission ${ permission } ` ) ;
@ -384,6 +384,16 @@ exports.userHasPermission = async function(user_uid, permission) {
}
}
exports . roleHasPermissions = async function ( role , permission ) {
const role _obj = await db _api . getRecord ( 'roles' , { key : role } )
if ( ! role ) {
logger . error ( ` Role ${ role } does not exist! ` ) ;
}
const role _permissions = role _obj [ 'permissions' ] ;
if ( role _permissions && role _permissions . includes ( permission ) ) return true ;
else return false ;
}
exports . userPermissions = async function ( user _uid ) {
let user _permissions = [ ] ;
const user _obj = await db _api . getRecord ( 'users' , ( { uid : user _uid } ) ) ;