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

View File

@ -159,7 +159,7 @@ module.exports = {
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 { data, files } = ctx.is('multipart') ? parseMultipartBody(ctx) : { data: body };