From a5df905e00d1a8cfce48b26a54a7fc27889dc626 Mon Sep 17 00:00:00 2001 From: Convly Date: Fri, 14 Aug 2020 16:31:36 +0200 Subject: [PATCH] Fix pr comments Signed-off-by: Convly --- packages/strapi-admin/services/role.js | 17 +++++------- .../validation/common-validators.js | 26 ++++++++++--------- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/packages/strapi-admin/services/role.js b/packages/strapi-admin/services/role.js index dc9391fb79..c7b11da0af 100644 --- a/packages/strapi-admin/services/role.js +++ b/packages/strapi-admin/services/role.js @@ -1,11 +1,14 @@ 'use strict'; const _ = require('lodash'); -const { map, filter } = require('lodash/fp'); const { generateTimestampCode, stringIncludes } = require('strapi-utils'); const { SUPER_ADMIN_CODE } = require('./constants'); const { createPermission } = require('../domain/permission'); +const ACTIONS = { + publish: 'plugins::content-manager.explorer.publish', +}; + const sanitizeRole = role => { return _.omit(role, ['users', 'permissions']); }; @@ -221,15 +224,9 @@ const createRolesIfNoneExist = async ({ createPermissionsForAdmin = false } = {} } ); - const addIsCreatorCondition = map(p => _.merge({}, p, { conditions: ['admin::is-creator'] })); - const removeRestrictedActions = filter( - p => !['plugins::content-manager.explorer.publish'].includes(p.action) - ); - - const authorPermissions = _.flow( - removeRestrictedActions, - addIsCreatorCondition - )(editorPermissions); + const authorPermissions = editorPermissions + .filter(({ action }) => action !== ACTIONS.publish) + .map(p => _.merge({}, p, { conditions: ['admin::is-creator'] })); editorPermissions.push(...getDefaultPluginPermissions()); authorPermissions.push(...getDefaultPluginPermissions({ isAuthor: true })); diff --git a/packages/strapi-admin/validation/common-validators.js b/packages/strapi-admin/validation/common-validators.js index 4535da08c2..576a56d6de 100644 --- a/packages/strapi-admin/validation/common-validators.js +++ b/packages/strapi-admin/validation/common-validators.js @@ -55,6 +55,18 @@ const checkNoDuplicatedPermissions = permissions => permissions.slice(i + 1).every(permB => !permissionsAreEquals(permA, permB)) ); +const checkNilFields = function(fields) { + // If the parent has no action field, then we ignore this test + if (_.isNil(this.parent.action)) { + return true; + } + + const { actionProvider } = strapi.admin.services.permission; + const action = actionProvider.getByActionId(this.parent.action); + + return actionDomain.hasFieldsRestriction(action) || _.isNil(fields); +}; + const updatePermissions = yup .object() .shape({ @@ -84,24 +96,14 @@ const updatePermissions = yup .test( 'fields-restriction', 'The permission at ${path} must have fields set to null or undefined', - function(fields) { - // If the parent has no action field, then we ignore this test - if (_.isNil(this.parent.action)) { - return true; - } - - const { actionProvider } = strapi.admin.services.permission; - const action = actionProvider.getByActionId(this.parent.action); - - return actionDomain.hasFieldsRestriction(action) || _.isNil(fields); - } + checkNilFields ), conditions: yup.array().of(yup.string()), }) .noUnknown() ) .test( - 'delete-fields-are-null', + 'duplicated-permissions', 'Some permissions are duplicated (same action and subject)', checkNoDuplicatedPermissions ),