From 3aec03969866b990450f13df867afb3f01e9f3d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20No=C3=ABl?= Date: Wed, 10 Jun 2020 15:42:32 +0200 Subject: [PATCH] refacto MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Pierre Noël --- .../strapi-admin/ee/validation/permission.js | 2 +- .../admin-permission.test.e2e.js.snap | 12 -------- .../validation/action-provider.js | 29 ++++++++++++------- .../validation/common-validators.js | 15 ---------- .../strapi-admin/validation/permission.js | 4 +-- .../services/ContentTypes.js | 3 ++ 6 files changed, 24 insertions(+), 41 deletions(-) diff --git a/packages/strapi-admin/ee/validation/permission.js b/packages/strapi-admin/ee/validation/permission.js index d6ce21068f..a668d6c6b5 100644 --- a/packages/strapi-admin/ee/validation/permission.js +++ b/packages/strapi-admin/ee/validation/permission.js @@ -14,7 +14,7 @@ const updatePermissionsSchema = yup .object() .shape({ action: yup.string().required(), - subject: yup.string(), + subject: yup.string().nullable(), fields: yup.array().of(yup.string()), conditions: yup.array().of(yup.string()), }) diff --git a/packages/strapi-admin/test/__snapshots__/admin-permission.test.e2e.js.snap b/packages/strapi-admin/test/__snapshots__/admin-permission.test.e2e.js.snap index 6657cbcc55..9a08a5e43c 100644 --- a/packages/strapi-admin/test/__snapshots__/admin-permission.test.e2e.js.snap +++ b/packages/strapi-admin/test/__snapshots__/admin-permission.test.e2e.js.snap @@ -9,9 +9,6 @@ Object { "action": "plugins::content-manager.create", "displayName": "Create", "subjects": Array [ - "strapi::permission", - "strapi::role", - "strapi::user", "plugins::users-permissions.user", ], }, @@ -19,9 +16,6 @@ Object { "action": "plugins::content-manager.read", "displayName": "Read", "subjects": Array [ - "strapi::permission", - "strapi::role", - "strapi::user", "plugins::users-permissions.user", ], }, @@ -29,9 +23,6 @@ Object { "action": "plugins::content-manager.update", "displayName": "Update", "subjects": Array [ - "strapi::permission", - "strapi::role", - "strapi::user", "plugins::users-permissions.user", ], }, @@ -39,9 +30,6 @@ Object { "action": "plugins::content-manager.delete", "displayName": "Delete", "subjects": Array [ - "strapi::permission", - "strapi::role", - "strapi::user", "plugins::users-permissions.user", ], }, diff --git a/packages/strapi-admin/validation/action-provider.js b/packages/strapi-admin/validation/action-provider.js index 84b81e6f7d..a36906a7cb 100644 --- a/packages/strapi-admin/validation/action-provider.js +++ b/packages/strapi-admin/validation/action-provider.js @@ -31,7 +31,7 @@ const registerProviderActionSchema = yup is: 'contentTypes', then: yup .array() - .of(validators.isAContentTypeId) + .of(yup.string()) .required(), otherwise: yup .mixed() @@ -39,21 +39,28 @@ const registerProviderActionSchema = yup }), displayName: yup.string().required(), category: yup.mixed().when('section', { - is: val => ['plugins', 'contentTypes'].includes(val), - then: yup + is: 'settings', + then: yup.string().required(), + otherwise: yup .mixed() - .oneOf([undefined], 'category should only be defined for the "settings" section'), - otherwise: yup.string().required(), + .test( + 'settingsCategory', + 'category should only be defined for the "settings" section', + cat => cat === undefined + ), }), subCategory: yup.mixed().when('section', { - is: 'contentTypes', - then: yup + is: section => ['settings', 'plugins'].includes(section), + then: yup.string(), + otherwise: yup .mixed() - .oneOf( - [undefined], - 'subCategory should only be defined for "plugins" and "settings" sections' + .test( + 'settingsSubCategory', + 'subCategory should only be defined for "plugins" and "settings" sections', + subCat => { + return subCat === undefined; + } ), - otherwise: yup.string(), }), }) .noUnknown() diff --git a/packages/strapi-admin/validation/common-validators.js b/packages/strapi-admin/validation/common-validators.js index 1e3973c0c2..88fa426277 100644 --- a/packages/strapi-admin/validation/common-validators.js +++ b/packages/strapi-admin/validation/common-validators.js @@ -30,20 +30,6 @@ const isAPluginName = yup : this.createError({ path: this.path, message: `${this.path} is not an existing plugin` }); }); -const isAContentTypeId = yup - .string() - .test('is-a-contentType-id', 'is not a content-type id', function(value) { - const contentTypesUids = strapi.plugins[ - 'content-manager' - ].services.contenttypes.getDisplayedContentTypesUids(); - return contentTypesUids.includes(value) - ? true - : this.createError({ - path: this.path, - message: `${this.path} is not an existing content-type id`, - }); - }); - module.exports = { email, firstname, @@ -52,5 +38,4 @@ module.exports = { password, roles, isAPluginName, - isAContentTypeId, }; diff --git a/packages/strapi-admin/validation/permission.js b/packages/strapi-admin/validation/permission.js index 863f27c4a1..2c36feab5e 100644 --- a/packages/strapi-admin/validation/permission.js +++ b/packages/strapi-admin/validation/permission.js @@ -5,7 +5,7 @@ const { yup, formatYupErrors } = require('strapi-utils'); const handleReject = error => Promise.reject(formatYupErrors(error)); -// --- validatedUpdatePermissionsInput +// validatedUpdatePermissionsInput const BONDED_ACTIONS = [ 'plugins::content-manager.read', @@ -75,7 +75,7 @@ const validatedUpdatePermissionsInput = data => { .catch(handleReject); }; -// --- validatePermissionsExist +// validatePermissionsExist const checkPermissionsExist = function(permissions) { const existingActions = strapi.admin.services.permission.provider.getAll(); diff --git a/packages/strapi-plugin-content-manager/services/ContentTypes.js b/packages/strapi-plugin-content-manager/services/ContentTypes.js index 0d82322d7f..202a9876d9 100644 --- a/packages/strapi-plugin-content-manager/services/ContentTypes.js +++ b/packages/strapi-plugin-content-manager/services/ContentTypes.js @@ -27,6 +27,9 @@ const HIDDEN_CONTENT_TYPES = [ 'plugins::upload.file', 'plugins::users-permissions.permission', 'plugins::users-permissions.role', + 'strapi::permission', + 'strapi::role', + 'strapi::user', ]; const getConfiguration = uid => {