2021-08-02 17:54:49 +02:00

35 lines
849 B
JavaScript

'use strict';
const { isNil } = require('lodash/fp');
const { getService } = require('../utils');
const { AUTHOR_CODE, PUBLISH_ACTION } = require('./constants');
// TODO: move actionProvider here instead of in the permission service
/**
* Returns actions available for a role.
* @param {string|number} roleId
* @returns {object[]}
*/
const getAllowedActionsForRole = async roleId => {
const { actionProvider } = getService('permission');
if (!isNil(roleId)) {
const role = await getService('role').findOne({ id: roleId });
if (!role) {
throw new strapi.errors.notFound('role.notFound');
}
if (role.code === AUTHOR_CODE) {
return actionProvider.values().filter(({ actionId }) => actionId !== PUBLISH_ACTION);
}
}
return actionProvider.values();
};
module.exports = {
getAllowedActionsForRole,
};