Added manticore sync API.
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
export default function verifyAbility(user, subject, action) {
|
||||
import { HttpError } from '../src/errors.js';
|
||||
|
||||
function checkAbility(user, subject, action) {
|
||||
if (!user?.abilities) {
|
||||
return null;
|
||||
}
|
||||
@@ -8,8 +10,18 @@ export default function verifyAbility(user, subject, action) {
|
||||
}
|
||||
|
||||
if (subject) {
|
||||
return user.abilities.some((ability) => ability[subject] === true);
|
||||
return user.abilities.some((ability) => ability[subject] === true || (ability.subject === subject && !ability.action));
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
export default function verifyAbility(user, subject, action, options = {}) {
|
||||
const isAble = checkAbility(user, subject, action);
|
||||
|
||||
if (!isAble && options.throwError) {
|
||||
throw new HttpError(`Insufficient privileges for ${[subject, action].filter(Boolean).join()}`, 403);
|
||||
}
|
||||
|
||||
return isAble;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user