@ra-libs/react-rbac
Version:
React admin RBAC front components and utils
31 lines • 1.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createRules = createRules;
exports.createAbility = createAbility;
const ability_1 = require("@casl/ability");
const pluralize_1 = require("pluralize");
function createRules(roles = []) {
return roles.reduce((acc, role) => {
return [
...acc,
...role.permissions.map((permission) => {
const subjectAsResource = (0, pluralize_1.isSingular)(permission.subject.toLowerCase())
? (0, pluralize_1.plural)(permission.subject.toLowerCase())
: permission.subject.toLowerCase();
const rawRule = {
action: permission.action,
subject: permission.subject == 'all' ? 'all' : subjectAsResource,
conditions: permission.conditions,
inverted: permission.inverted || false,
};
if (Array.isArray(permission.fields) && permission.fields.length > 0)
rawRule.fields = permission.fields;
return rawRule;
}),
];
}, []);
}
function createAbility(rules) {
return new ability_1.Ability(rules);
}
//# sourceMappingURL=index.js.map