2020-06-29 18:30:35 +02:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
const {
|
2021-11-05 12:19:49 +01:00
|
|
|
policy: { createPolicy },
|
2021-04-29 13:51:12 +02:00
|
|
|
} = require('@strapi/utils');
|
2021-09-24 09:04:44 +02:00
|
|
|
const { validateHasPermissionsInput } = require('../validation/policies/hasPermissions');
|
2020-06-29 18:30:35 +02:00
|
|
|
|
2021-11-05 12:19:49 +01:00
|
|
|
module.exports = createPolicy({
|
|
|
|
name: 'plugin::content-manager.hasPermissions',
|
|
|
|
validator: validateHasPermissionsInput,
|
|
|
|
handler(ctx, config = {}) {
|
|
|
|
const { actions = [], hasAtLeastOne = false } = config;
|
|
|
|
|
2020-06-29 18:30:35 +02:00
|
|
|
const {
|
2021-11-04 15:18:09 +01:00
|
|
|
state: { userAbility },
|
2020-06-29 18:30:35 +02:00
|
|
|
params: { model },
|
|
|
|
} = ctx;
|
|
|
|
|
2020-07-02 17:52:27 +02:00
|
|
|
const isAuthorized = hasAtLeastOne
|
2022-08-08 23:33:39 +02:00
|
|
|
? actions.some((action) => userAbility.can(action, model))
|
|
|
|
: actions.every((action) => userAbility.can(action, model));
|
2020-06-29 18:30:35 +02:00
|
|
|
|
2021-10-20 17:30:05 +02:00
|
|
|
return isAuthorized;
|
2020-06-29 18:30:35 +02:00
|
|
|
},
|
2021-11-05 12:19:49 +01:00
|
|
|
});
|