Use AbilityBuilder instead of defineAbility, fix content-manager::create route

Signed-off-by: Convly <jean-sebastien.herbaux@epitech.eu>
This commit is contained in:
Convly 2020-06-30 10:35:44 +02:00 committed by Alexandre Bodin
parent 8f7da9674c
commit c11e6dfa88
2 changed files with 11 additions and 9 deletions

View File

@ -2,7 +2,7 @@
const _ = require('lodash'); const _ = require('lodash');
const { map, filter, each } = require('lodash/fp'); const { map, filter, each } = require('lodash/fp');
const { defineAbility } = require('@casl/ability'); const { AbilityBuilder, Ability } = require('@casl/ability');
module.exports = conditionProvider => ({ module.exports = conditionProvider => ({
/** /**
@ -24,14 +24,16 @@ module.exports = conditionProvider => ({
* @returns {function(*, *): Promise<Ability>} * @returns {function(*, *): Promise<Ability>}
*/ */
generateAbilityCreatorFor(user) { generateAbilityCreatorFor(user) {
return async (permissions, options) => return async (permissions, options) => {
defineAbility(async can => { const { can, build } = new AbilityBuilder(Ability);
const registerFn = this.createRegisterFunction(can); const registerFn = this.createRegisterFunction(can);
for (const permission of permissions) { for (const permission of permissions) {
await this.evaluatePermission({ permission, user, options, registerFn }); await this.evaluatePermission({ permission, user, options, registerFn });
} }
});
return build();
};
}, },
/** /**

View File

@ -159,7 +159,7 @@ module.exports = {
throw strapi.errors.forbidden(); throw strapi.errors.forbidden();
} }
const sanitize = e => pm.sanitize(e, { subject: ACTIONS.create }); const sanitize = e => pm.sanitize(e, { subject: model });
const userId = user.id; const userId = user.id;
const { data, files } = ctx.is('multipart') ? parseMultipartBody(ctx) : { data: body }; const { data, files } = ctx.is('multipart') ? parseMultipartBody(ctx) : { data: body };