diff --git a/packages/strapi-admin/services/__tests__/action-provider.test.js b/packages/strapi-admin/services/__tests__/action-provider.test.js index 7ca7d1e8b8..b9963aac48 100644 --- a/packages/strapi-admin/services/__tests__/action-provider.test.js +++ b/packages/strapi-admin/services/__tests__/action-provider.test.js @@ -106,14 +106,8 @@ describe('Action Provider Service', () => { section: 'plugins', }; - await actionProviderService.register([action1, action2]); - - expect(global.strapi.stopWithError).toHaveBeenCalledWith( - expect.objectContaining({ - name: 'ValidationError', - message: - 'Duplicated action keys: plugins::aPlugin.marketplace.delete. You may want to change the actions name.', - }) + expect(() => actionProviderService.register([action1, action2])).toThrow( + 'Duplicated action id: plugins::aPlugin.marketplace.delete. You may want to change the actions name.' ); }); diff --git a/packages/strapi-admin/services/__tests__/permission.test.js b/packages/strapi-admin/services/__tests__/permission.test.js index d1309d3c73..e6acdf8abf 100644 --- a/packages/strapi-admin/services/__tests__/permission.test.js +++ b/packages/strapi-admin/services/__tests__/permission.test.js @@ -25,7 +25,7 @@ describe('Permission Service', () => { const getAll = jest.fn(() => []); global.strapi = { - admin: { permissionProvider: { getAll } }, + admin: { services: { permission: { provider: { getAll } } } }, query() { return { delete: deleteFn, create }; }, @@ -42,11 +42,11 @@ describe('Permission Service', () => { const getAll = jest.fn(() => Array(5) .fill(0) - .map((v, i) => ({ permissionId: `action-${i}` })) + .map((v, i) => ({ actionId: `action-${i}` })) ); global.strapi = { - admin: { permissionProvider: { getAll } }, + admin: { services: { permission: { provider: { getAll } } } }, query() { return { delete: deleteFn, create }; }, diff --git a/packages/strapi-admin/services/action-provider.js b/packages/strapi-admin/services/action-provider.js index e5e45625c0..4de0ace38d 100644 --- a/packages/strapi-admin/services/action-provider.js +++ b/packages/strapi-admin/services/action-provider.js @@ -9,7 +9,7 @@ const actionProviderFactory = () => { return { get(uid, pluginName) { const actionId = getActionId({ pluginName, uid }); - const action = actions.find(p => p.actionId === actionId); + const action = actions.get(actionId); return _.cloneDeep(action); }, getAll() { diff --git a/packages/strapi-admin/test/admin-role.test.e2e.js b/packages/strapi-admin/test/admin-role.test.e2e.js index d9341e4944..76dec36e0b 100644 --- a/packages/strapi-admin/test/admin-role.test.e2e.js +++ b/packages/strapi-admin/test/admin-role.test.e2e.js @@ -359,7 +359,7 @@ describe('Role CRUD End to End', () => { }, { action: 'plugins::content-manager.create', - subject: 'plugins::upload.file', + subject: 'plugins::users-permissions.user', conditions: ['isOwner'], }, ], diff --git a/packages/strapi-admin/test/permissions.json b/packages/strapi-admin/test/permissions.json index 83dfbb4c5a..6d6764b61c 100644 --- a/packages/strapi-admin/test/permissions.json +++ b/packages/strapi-admin/test/permissions.json @@ -234,10 +234,7 @@ "strapi::permission", "strapi::role", "strapi::user", - "plugins::users-permissions.permission", - "plugins::users-permissions.role", - "plugins::users-permissions.user", - "plugins::upload.file" + "plugins::users-permissions.user" ] }, { @@ -247,10 +244,7 @@ "strapi::permission", "strapi::role", "strapi::user", - "plugins::users-permissions.permission", - "plugins::users-permissions.role", - "plugins::users-permissions.user", - "plugins::upload.file" + "plugins::users-permissions.user" ] }, { @@ -260,10 +254,7 @@ "strapi::permission", "strapi::role", "strapi::user", - "plugins::users-permissions.permission", - "plugins::users-permissions.role", - "plugins::users-permissions.user", - "plugins::upload.file" + "plugins::users-permissions.user" ] }, { @@ -273,10 +264,7 @@ "strapi::permission", "strapi::role", "strapi::user", - "plugins::users-permissions.permission", - "plugins::users-permissions.role", - "plugins::users-permissions.user", - "plugins::upload.file" + "plugins::users-permissions.user" ] } ] diff --git a/packages/strapi-plugin-content-manager/config/functions/bootstrap.js b/packages/strapi-plugin-content-manager/config/functions/bootstrap.js index 4d6b92fb6a..1e4264692c 100644 --- a/packages/strapi-plugin-content-manager/config/functions/bootstrap.js +++ b/packages/strapi-plugin-content-manager/config/functions/bootstrap.js @@ -109,7 +109,9 @@ async function syncComponentsSchemas() { } function registerPermissions() { - const contentTypesUids = Object.keys(strapi.contentTypes); // TODO: filter to not have internal contentTypes + const contentTypesUids = strapi.plugins[ + 'content-manager' + ].services.contenttypes.getDisplayedContentTypesUids(); const actions = [ { diff --git a/packages/strapi-plugin-content-manager/services/ContentTypes.js b/packages/strapi-plugin-content-manager/services/ContentTypes.js index c00286fdd4..0d82322d7f 100644 --- a/packages/strapi-plugin-content-manager/services/ContentTypes.js +++ b/packages/strapi-plugin-content-manager/services/ContentTypes.js @@ -128,10 +128,14 @@ const createTimestampsSchema = contentType => { }; }; +const getDisplayedContentTypesUids = () => + Object.keys(strapi.contentTypes).filter(ct => !HIDDEN_CONTENT_TYPES.includes(ct)); + module.exports = { getConfiguration, setConfiguration, deleteConfiguration, formatContentType, formatContentTypeSchema, + getDisplayedContentTypesUids, }; diff --git a/packages/strapi-plugin-upload/test/__tests__/bootstrap.test.js b/packages/strapi-plugin-upload/test/__tests__/bootstrap.test.js index 0160466ac0..4188dcb5c6 100644 --- a/packages/strapi-plugin-upload/test/__tests__/bootstrap.test.js +++ b/packages/strapi-plugin-upload/test/__tests__/bootstrap.test.js @@ -7,9 +7,7 @@ describe('Upload plugin bootstrap function', () => { global.strapi = { admin: { - permissionProvider: { - register, - }, + services: { permission: { provider: { register } } }, }, log: { error() {}, diff --git a/packages/strapi-utils/lib/validators.js b/packages/strapi-utils/lib/validators.js index 220d5e7118..cebb2138fa 100644 --- a/packages/strapi-utils/lib/validators.js +++ b/packages/strapi-utils/lib/validators.js @@ -30,7 +30,10 @@ function isAPluginName(message) { function isAContentTypeId(message) { return this.test('is not a content-type id', message, function(value) { - return Object.keys(strapi.contentTypes).includes(value) + const contentTypesUids = strapi.plugins[ + 'content-manager' + ].services.contenttypes.getDisplayedContentTypesUids(); + return contentTypesUids.includes(value) ? true : this.createError({ path: this.path,