diff --git a/docs/docs/docs/01-core/admin/02-permissions/01-how-they-work.mdx b/docs/docs/docs/01-core/admin/02-permissions/01-how-they-work.mdx index 38a9e27f23..a89232da76 100644 --- a/docs/docs/docs/01-core/admin/02-permissions/01-how-they-work.mdx +++ b/docs/docs/docs/01-core/admin/02-permissions/01-how-they-work.mdx @@ -82,7 +82,7 @@ module.exports = async () => { subCategory: 'options', }, ]; - await strapi.admin.services.permission.actionProvider.registerMany(actions); + await strapi.service('admin::permission').actionProvider.registerMany(actions); }; ``` @@ -136,7 +136,7 @@ module.exports = async () => { handler: (user) => ({ 'createdBy.id': user.id }), }, ]; - await strapi.admin.services.permission.conditionProvider.registerMany(conditions); + await strapi.service('admin::permission').conditionProvider.registerMany(conditions); }; ``` diff --git a/packages/core/admin/ee/server/src/controllers/__tests__/stages.test.ts b/packages/core/admin/ee/server/src/controllers/__tests__/stages.test.ts index e7d3b051a3..4ac0ad53b0 100644 --- a/packages/core/admin/ee/server/src/controllers/__tests__/stages.test.ts +++ b/packages/core/admin/ee/server/src/controllers/__tests__/stages.test.ts @@ -104,7 +104,7 @@ describe('Stages', () => { }); test('cannot transition', async () => { - global.strapi.admin.services['stage-permissions'].can.mockReturnValueOnce(false); + global.strapi.service('admin::stage-permissions').can.mockReturnValueOnce(false); const ctx: any = { ...baseCtx, @@ -145,7 +145,7 @@ describe('Stages', () => { }); test('cannot transition', async () => { - global.strapi.admin.services['stage-permissions'].can.mockReturnValueOnce(false); + global.strapi.service('admin::stage-permissions').can.mockReturnValueOnce(false); const ctx: any = { ...baseCtx, diff --git a/packages/core/admin/ee/server/src/controllers/authentication.ts b/packages/core/admin/ee/server/src/controllers/authentication.ts index c3d00cb727..07c98c6d42 100644 --- a/packages/core/admin/ee/server/src/controllers/authentication.ts +++ b/packages/core/admin/ee/server/src/controllers/authentication.ts @@ -18,7 +18,7 @@ const providerAuthenticationFlow = compose([ export default { async getProviders(ctx: Context) { - const { providerRegistry } = strapi.admin.services.passport; + const { providerRegistry } = strapi.service('admin::passport'); ctx.body = providerRegistry.getAll().map(toProviderDTO); }, @@ -56,7 +56,7 @@ export default { params: { provider: providerName }, } = ctx; - const { providerRegistry } = strapi.admin.services.passport; + const { providerRegistry } = strapi.service('admin::passport'); if (!providerRegistry.has(providerName)) { throw new ValidationError(`Invalid provider supplied: ${providerName}`); diff --git a/packages/core/admin/ee/server/src/services/metrics.ts b/packages/core/admin/ee/server/src/services/metrics.ts index 539b523c83..6f6acb1c47 100644 --- a/packages/core/admin/ee/server/src/services/metrics.ts +++ b/packages/core/admin/ee/server/src/services/metrics.ts @@ -3,7 +3,7 @@ import type { Core } from '@strapi/types'; import { getService } from '../utils'; const getSSOProvidersList = async () => { - const { providerRegistry } = strapi.admin.services.passport; + const { providerRegistry } = strapi.service('admin::passport'); return providerRegistry.getAll().map(({ uid }: { uid: string }) => uid); }; diff --git a/packages/core/admin/ee/server/src/validation/authentication.ts b/packages/core/admin/ee/server/src/validation/authentication.ts index dc687436f6..1be58759a4 100644 --- a/packages/core/admin/ee/server/src/validation/authentication.ts +++ b/packages/core/admin/ee/server/src/validation/authentication.ts @@ -11,7 +11,7 @@ const providerOptionsUpdateSchema = yup.object().shape({ if (roleId === null) { return true; } - return strapi.admin.services.role.exists({ id: roleId }); + return strapi.service('admin::role').exists({ id: roleId }); }), ssoLockedRoles: yup .array() @@ -23,7 +23,7 @@ const providerOptionsUpdateSchema = yup.object().shape({ 'is-valid-role', 'You must submit a valid role for the SSO Locked roles', (roleId) => { - return strapi.admin.services.role.exists({ id: roleId }); + return strapi.service('admin::role').exists({ id: roleId }); } ) ), diff --git a/packages/core/admin/ee/server/src/validation/role.ts b/packages/core/admin/ee/server/src/validation/role.ts index 4bda5442b3..2ed7573011 100644 --- a/packages/core/admin/ee/server/src/validation/role.ts +++ b/packages/core/admin/ee/server/src/validation/role.ts @@ -21,10 +21,10 @@ const rolesDeleteSchema = yup 'Roles deletion checks have failed', async function rolesDeletionChecks(ids) { try { - await strapi.admin.services.role.checkRolesIdForDeletion(ids); + await strapi.service('admin::role').checkRolesIdForDeletion(ids); if (strapi.ee.features.isEnabled('sso')) { - await strapi.admin.services.role.ssoCheckRolesIdForDeletion(ids); + await strapi.service('admin::role').ssoCheckRolesIdForDeletion(ids); } } catch (e: any) { return this.createError({ path: 'ids', message: e.message }); @@ -44,10 +44,10 @@ const roleDeleteSchema = yup 'Role deletion checks have failed', async function noAdminSingleDelete(id) { try { - await strapi.admin.services.role.checkRolesIdForDeletion([id]); + await strapi.service('admin::role').checkRolesIdForDeletion([id]); if (strapi.ee.features.isEnabled('sso')) { - await strapi.admin.services.role.ssoCheckRolesIdForDeletion([id]); + await strapi.service('admin::role').ssoCheckRolesIdForDeletion([id]); } } catch (e: any) { return this.createError({ path: 'id', message: e.message }); diff --git a/packages/core/admin/server/src/controllers/__tests__/admin.test.ts b/packages/core/admin/server/src/controllers/__tests__/admin.test.ts index 75cc7fc7bd..d42d3f4a0d 100644 --- a/packages/core/admin/server/src/controllers/__tests__/admin.test.ts +++ b/packages/core/admin/server/src/controllers/__tests__/admin.test.ts @@ -38,7 +38,7 @@ describe('Admin Controller', () => { 'packageJsonStrapi.telemetryDisabled', null ); - expect(global.strapi.admin.services.user.exists).toHaveBeenCalled(); + expect(global.strapi.service('admin::user').exists).toHaveBeenCalled(); expect(result.data).toBeDefined(); expect(result.data).toStrictEqual({ uuid: 'foo', diff --git a/packages/core/admin/server/src/controllers/__tests__/permission.test.ts b/packages/core/admin/server/src/controllers/__tests__/permission.test.ts index 12be3918ef..ae87e277b7 100644 --- a/packages/core/admin/server/src/controllers/__tests__/permission.test.ts +++ b/packages/core/admin/server/src/controllers/__tests__/permission.test.ts @@ -195,7 +195,7 @@ describe('Permission Controller', () => { await permissionController.check(ctx); expect(localTestData.ability.can).toHaveBeenCalled(); - expect(strapi.admin.services.permission.engine.checkMany).toHaveBeenCalled(); + expect(strapi.service('admin::permission').engine.checkMany).toHaveBeenCalled(); expect(ctx.body.data).toHaveLength(localTestData.permissions.valid.length); }); }); diff --git a/packages/core/admin/server/src/controllers/user.ts b/packages/core/admin/server/src/controllers/user.ts index f6dbb3c276..6072bd9530 100644 --- a/packages/core/admin/server/src/controllers/user.ts +++ b/packages/core/admin/server/src/controllers/user.ts @@ -58,7 +58,7 @@ export default { async find(ctx: Context) { const userService = getService('user'); - const permissionsManager = strapi.admin.services.permission.createPermissionsManager({ + const permissionsManager = strapi.service('admin::permission').createPermissionsManager({ ability: ctx.state.userAbility, model: 'admin::user', }); diff --git a/packages/core/admin/server/src/services/passport.ts b/packages/core/admin/server/src/services/passport.ts index c99e736182..71610c0476 100644 --- a/packages/core/admin/server/src/services/passport.ts +++ b/packages/core/admin/server/src/services/passport.ts @@ -11,7 +11,7 @@ const authEventsMapper = { const valueIsFunctionType = ([, value]: [any, any]) => isFunction(value); const keyIsValidEventName = ([key]: any) => { - return Object.keys(strapi.admin.services.passport.authEventsMapper).includes(key); + return Object.keys(strapi.service('admin::passport').authEventsMapper).includes(key); }; const getPassportStrategies = () => [createLocalStrategy(strapi)] as Strategy[]; @@ -19,7 +19,7 @@ const getPassportStrategies = () => [createLocalStrategy(strapi)] as Strategy[]; const registerAuthEvents = () => { // @ts-expect-error - TODO: migrate auth service to TS const { events = {} } = strapi.config.get('admin.auth', {}); - const { authEventsMapper } = strapi.admin.services.passport; + const { authEventsMapper } = strapi.service('admin::passport'); const eventList = Object.entries(events).filter(keyIsValidEventName).filter(valueIsFunctionType); @@ -30,7 +30,8 @@ const registerAuthEvents = () => { }; const init = () => { - strapi.admin.services.passport + strapi + .service('admin::passport') .getPassportStrategies() .forEach((strategy: Strategy) => passport.use(strategy)); diff --git a/packages/core/admin/server/src/services/transfer/token.ts b/packages/core/admin/server/src/services/transfer/token.ts index 87d5b3e05f..3b71288d15 100644 --- a/packages/core/admin/server/src/services/transfer/token.ts +++ b/packages/core/admin/server/src/services/transfer/token.ts @@ -341,7 +341,7 @@ const flattenTokenPermissions = (token: DatabaseTransferToken): TransferToken => * Assert that a token's permissions are valid */ const assertTokenPermissionsValidity = (attributes: TokenUpdatePayload) => { - const permissionService = strapi.admin.services.transfer.permission; + const permissionService = strapi.service('admin::transfer').permission; const validPermissions = permissionService.providers.action.keys(); const invalidPermissions = difference(attributes.permissions, validPermissions); diff --git a/packages/core/admin/server/src/validation/common-validators.ts b/packages/core/admin/server/src/validation/common-validators.ts index 96f506d632..50c6af985d 100644 --- a/packages/core/admin/server/src/validation/common-validators.ts +++ b/packages/core/admin/server/src/validation/common-validators.ts @@ -41,7 +41,7 @@ export const arrayOfConditionNames = yup .array() .of(yup.string()) .test('is-an-array-of-conditions', 'is not a plugin name', function (value) { - const ids = strapi.admin.services.permission.conditionProvider.keys(); + const ids = strapi.service('admin::permission').conditionProvider.keys(); return _.isUndefined(value) || _.difference(value, ids).length === 0 ? true : this.createError({ path: this.path, message: `contains conditions that don't exist` }); diff --git a/packages/core/admin/server/src/validation/role.ts b/packages/core/admin/server/src/validation/role.ts index 9c8cf907be..8780685fa1 100644 --- a/packages/core/admin/server/src/validation/role.ts +++ b/packages/core/admin/server/src/validation/role.ts @@ -18,7 +18,7 @@ const rolesDeleteSchema = yup .required() .test('roles-deletion-checks', 'Roles deletion checks have failed', async function (ids) { try { - await strapi.admin.services.role.checkRolesIdForDeletion(ids); + await strapi.service('admin::role').checkRolesIdForDeletion(ids); } catch (e) { // @ts-expect-error yup types return this.createError({ path: 'ids', message: e.message }); @@ -34,7 +34,7 @@ const roleDeleteSchema = yup .required() .test('no-admin-single-delete', 'Role deletion checks have failed', async function (id) { try { - await strapi.admin.services.role.checkRolesIdForDeletion([id]); + await strapi.service('admin::role').checkRolesIdForDeletion([id]); } catch (e) { // @ts-expect-error yup types return this.createError({ path: 'id', message: e.message }); diff --git a/packages/core/content-releases/server/src/__tests__/index.test.ts b/packages/core/content-releases/server/src/__tests__/index.test.ts index e497977aa6..dd5433e53c 100644 --- a/packages/core/content-releases/server/src/__tests__/index.test.ts +++ b/packages/core/content-releases/server/src/__tests__/index.test.ts @@ -64,7 +64,7 @@ describe('register', () => { strapi.ee.features.isEnabled.mockReturnValue(true); register({ strapi }); - expect(strapi.admin.services.permission.actionProvider.registerMany).toHaveBeenCalledWith( + expect(strapi.service('admin::permission').actionProvider.registerMany).toHaveBeenCalledWith( ACTIONS ); }); @@ -73,7 +73,7 @@ describe('register', () => { strapi.ee.features.isEnabled.mockReturnValue(false); register({ strapi }); - expect(strapi.admin.services.permission.actionProvider.registerMany).not.toHaveBeenCalled(); + expect(strapi.service('admin::permission').actionProvider.registerMany).not.toHaveBeenCalled(); }); it('should exclude the release and release action models from the GraphQL schema when the feature is enabled', async () => { diff --git a/packages/core/content-releases/server/src/controllers/__tests__/release.test.ts b/packages/core/content-releases/server/src/controllers/__tests__/release.test.ts index 0eba3a4f2a..f7199203d6 100644 --- a/packages/core/content-releases/server/src/controllers/__tests__/release.test.ts +++ b/packages/core/content-releases/server/src/controllers/__tests__/release.test.ts @@ -262,7 +262,7 @@ describe('Release controller', () => { // @ts-expect-error partial context await releaseController.findOne(ctx); - expect(strapi.admin.services.user.sanitizeUser).toHaveBeenCalled(); + expect(strapi.service('admin::user').sanitizeUser).toHaveBeenCalled(); }); }); }); diff --git a/packages/core/content-releases/server/src/controllers/release-action.ts b/packages/core/content-releases/server/src/controllers/release-action.ts index 550dd7b89d..8b6503eac1 100644 --- a/packages/core/content-releases/server/src/controllers/release-action.ts +++ b/packages/core/content-releases/server/src/controllers/release-action.ts @@ -75,7 +75,7 @@ const releaseActionController = { async findMany(ctx: Koa.Context) { const releaseId: GetReleaseActions.Request['params']['releaseId'] = ctx.params.releaseId; - const permissionsManager = strapi.admin.services.permission.createPermissionsManager({ + const permissionsManager = strapi.service('admin::permission').createPermissionsManager({ ability: ctx.state.userAbility, model: RELEASE_ACTION_MODEL_UID, }); @@ -97,8 +97,9 @@ const releaseActionController = { return acc; } - const contentTypePermissionsManager = - strapi.admin.services.permission.createPermissionsManager({ + const contentTypePermissionsManager = strapi + .service('admin::permission') + .createPermissionsManager({ ability: ctx.state.userAbility, model: action.contentType, }); diff --git a/packages/core/content-releases/server/src/controllers/release.ts b/packages/core/content-releases/server/src/controllers/release.ts index 3ee6a7c727..fca8eb9bfa 100644 --- a/packages/core/content-releases/server/src/controllers/release.ts +++ b/packages/core/content-releases/server/src/controllers/release.ts @@ -19,7 +19,7 @@ type ReleaseWithPopulatedActions = Release & { actions: { count: number } }; const releaseController = { async findMany(ctx: Koa.Context) { - const permissionsManager = strapi.admin.services.permission.createPermissionsManager({ + const permissionsManager = strapi.service('admin::permission').createPermissionsManager({ ability: ctx.state.userAbility, model: RELEASE_MODEL_UID, }); @@ -89,7 +89,7 @@ const releaseController = { const sanitizedRelease = { ...release, createdBy: release.createdBy - ? strapi.admin.services.user.sanitizeUser(release.createdBy) + ? strapi.service('admin::user').sanitizeUser(release.createdBy) : null, }; @@ -115,7 +115,7 @@ const releaseController = { const releaseService = getService('release', { strapi }); const release = await releaseService.create(releaseArgs, { user }); - const permissionsManager = strapi.admin.services.permission.createPermissionsManager({ + const permissionsManager = strapi.service('admin::permission').createPermissionsManager({ ability: ctx.state.userAbility, model: RELEASE_MODEL_UID, }); @@ -135,7 +135,7 @@ const releaseController = { const releaseService = getService('release', { strapi }); const release = await releaseService.update(id, releaseArgs, { user }); - const permissionsManager = strapi.admin.services.permission.createPermissionsManager({ + const permissionsManager = strapi.service('admin::permission').createPermissionsManager({ ability: ctx.state.userAbility, model: RELEASE_MODEL_UID, }); diff --git a/packages/core/upload/server/src/bootstrap.ts b/packages/core/upload/server/src/bootstrap.ts index 612830d052..ca040e6b16 100644 --- a/packages/core/upload/server/src/bootstrap.ts +++ b/packages/core/upload/server/src/bootstrap.ts @@ -104,5 +104,5 @@ const registerPermissionActions = async () => { }, ]; - await strapi.admin.services.permission.actionProvider.registerMany(actions); + await strapi.service('admin::permission').actionProvider.registerMany(actions); }; diff --git a/packages/core/upload/server/src/controllers/admin-file.ts b/packages/core/upload/server/src/controllers/admin-file.ts index 39e2c83f38..54cbe8b3bd 100644 --- a/packages/core/upload/server/src/controllers/admin-file.ts +++ b/packages/core/upload/server/src/controllers/admin-file.ts @@ -15,7 +15,7 @@ export default { const defaultQuery = { populate: { folder: true } }; - const pm = strapi.admin.services.permission.createPermissionsManager({ + const pm = strapi.service('admin::permission').createPermissionsManager({ ability: userAbility, action: ACTIONS.read, model: FILE_MODEL_UID, diff --git a/packages/core/upload/server/src/controllers/admin-folder-file.ts b/packages/core/upload/server/src/controllers/admin-folder-file.ts index f8eaf1cd1f..7f499bd3d7 100644 --- a/packages/core/upload/server/src/controllers/admin-folder-file.ts +++ b/packages/core/upload/server/src/controllers/admin-folder-file.ts @@ -18,12 +18,12 @@ export default { state: { userAbility }, } = ctx; - const pmFolder = strapi.admin.services.permission.createPermissionsManager({ + const pmFolder = strapi.service('admin::permission').createPermissionsManager({ ability: ctx.state.userAbility, model: FOLDER_MODEL_UID, }); - const pmFile = strapi.admin.services.permission.createPermissionsManager({ + const pmFile = strapi.service('admin::permission').createPermissionsManager({ ability: userAbility, action: ACTIONS.read, model: FILE_MODEL_UID, @@ -65,12 +65,12 @@ export default { state: { userAbility }, } = ctx; - const pmFolder = strapi.admin.services.permission.createPermissionsManager({ + const pmFolder = strapi.service('admin::permission').createPermissionsManager({ ability: ctx.state.userAbility, model: FOLDER_MODEL_UID, }); - const pmFile = strapi.admin.services.permission.createPermissionsManager({ + const pmFile = strapi.service('admin::permission').createPermissionsManager({ ability: userAbility, action: ACTIONS.read, model: FILE_MODEL_UID, diff --git a/packages/core/upload/server/src/controllers/admin-folder.ts b/packages/core/upload/server/src/controllers/admin-folder.ts index a318a5b702..e9d956cb8a 100644 --- a/packages/core/upload/server/src/controllers/admin-folder.ts +++ b/packages/core/upload/server/src/controllers/admin-folder.ts @@ -10,7 +10,7 @@ export default { async findOne(ctx: Context) { const { id } = ctx.params; - const permissionsManager = strapi.admin.services.permission.createPermissionsManager({ + const permissionsManager = strapi.service('admin::permission').createPermissionsManager({ ability: ctx.state.userAbility, model: FOLDER_MODEL_UID, }); @@ -48,7 +48,7 @@ export default { }, async find(ctx: Context) { - const permissionsManager = strapi.admin.services.permission.createPermissionsManager({ + const permissionsManager = strapi.service('admin::permission').createPermissionsManager({ ability: ctx.state.userAbility, model: FOLDER_MODEL_UID, }); @@ -89,7 +89,7 @@ export default { const folder = await folderService.create(body, { user }); - const permissionsManager = strapi.admin.services.permission.createPermissionsManager({ + const permissionsManager = strapi.service('admin::permission').createPermissionsManager({ ability: ctx.state.userAbility, model: FOLDER_MODEL_UID, }); @@ -104,7 +104,7 @@ export default { const { user } = ctx.state; const { body } = ctx.request; - const permissionsManager = strapi.admin.services.permission.createPermissionsManager({ + const permissionsManager = strapi.service('admin::permission').createPermissionsManager({ ability: ctx.state.userAbility, model: FOLDER_MODEL_UID, }); diff --git a/packages/core/upload/server/src/controllers/admin-upload.ts b/packages/core/upload/server/src/controllers/admin-upload.ts index bd2ce27c18..30c6c7db29 100644 --- a/packages/core/upload/server/src/controllers/admin-upload.ts +++ b/packages/core/upload/server/src/controllers/admin-upload.ts @@ -75,7 +75,7 @@ export default { } = ctx; const uploadService = getService('upload'); - const pm = strapi.admin.services.permission.createPermissionsManager({ + const pm = strapi.service('admin::permission').createPermissionsManager({ ability: userAbility, action: ACTIONS.create, model: FILE_MODEL_UID, diff --git a/packages/core/upload/server/src/controllers/utils/find-entity-and-check-permissions.ts b/packages/core/upload/server/src/controllers/utils/find-entity-and-check-permissions.ts index b36c292aaa..2e719a1abe 100644 --- a/packages/core/upload/server/src/controllers/utils/find-entity-and-check-permissions.ts +++ b/packages/core/upload/server/src/controllers/utils/find-entity-and-check-permissions.ts @@ -17,10 +17,14 @@ const findEntityAndCheckPermissions = async ( throw new errors.NotFoundError(); } - const pm = strapi.admin.services.permission.createPermissionsManager({ ability, action, model }); + const pm = strapi + .service('admin::permission') + .createPermissionsManager({ ability, action, model }); const creatorId = _.get(file, [contentTypesUtils.constants.CREATED_BY_ATTRIBUTE, 'id']); - const author = creatorId ? await strapi.admin.services.user.findOne(creatorId, ['roles']) : null; + const author = creatorId + ? await strapi.service('admin::user').findOne(creatorId, ['roles']) + : null; const fileWithRoles = _.set(_.cloneDeep(file), 'createdBy', author); diff --git a/packages/plugins/i18n/server/src/controllers/content-types.ts b/packages/plugins/i18n/server/src/controllers/content-types.ts index 8cb01358f9..9bf646c2c8 100644 --- a/packages/plugins/i18n/server/src/controllers/content-types.ts +++ b/packages/plugins/i18n/server/src/controllers/content-types.ts @@ -29,7 +29,7 @@ const controller = { const { default: { READ_ACTION, CREATE_ACTION }, - } = strapi.admin.services.constants; + } = strapi.service('admin::constants'); const modelDef = strapi.contentType(model); const attributesToPopulate = getNestedPopulateOfNonLocalizedAttributes(model); diff --git a/packages/plugins/i18n/server/src/services/permissions/actions.ts b/packages/plugins/i18n/server/src/services/permissions/actions.ts index 0c11efa186..743c62570b 100644 --- a/packages/plugins/i18n/server/src/services/permissions/actions.ts +++ b/packages/plugins/i18n/server/src/services/permissions/actions.ts @@ -43,7 +43,7 @@ const shouldApplyLocalesPropertyToSubject = ({ property, subject }: any) => { }; const addAllLocalesToPermissions = async (permissions: any) => { - const { actionProvider } = strapi.admin.services.permission; + const { actionProvider } = strapi.service('admin::permission'); const { find: findAllLocales } = getService('locales'); const allLocales = await findAllLocales(); @@ -71,8 +71,8 @@ const addAllLocalesToPermissions = async (permissions: any) => { }; const syncSuperAdminPermissionsWithLocales = async () => { - const roleService = strapi.admin.services.role; - const permissionService = strapi.admin.services.permission; + const roleService = strapi.service('admin::role'); + const permissionService = strapi.service('admin::permission'); const superAdminRole = await roleService.getSuperAdmin(); @@ -94,21 +94,21 @@ const syncSuperAdminPermissionsWithLocales = async () => { }; const registerI18nActions = async () => { - const { actionProvider } = strapi.admin.services.permission; + const { actionProvider } = strapi.service('admin::permission'); await actionProvider.registerMany(actions); }; const registerI18nActionsHooks = () => { - const { actionProvider } = strapi.admin.services.permission; - const { hooks } = strapi.admin.services.role; + const { actionProvider } = strapi.service('admin::permission'); + const { hooks } = strapi.service('admin::role'); actionProvider.hooks.appliesPropertyToSubject.register(shouldApplyLocalesPropertyToSubject); hooks.willResetSuperAdminPermissions.register(addAllLocalesToPermissions); }; const updateActionsProperties = () => { - const { actionProvider } = strapi.admin.services.permission; + const { actionProvider } = strapi.service('admin::permission'); // Register the transformation for every new action actionProvider.hooks.willRegister.register(addLocalesPropertyIfNeeded); diff --git a/packages/plugins/i18n/server/src/services/permissions/conditions.ts b/packages/plugins/i18n/server/src/services/permissions/conditions.ts index 63c3fca575..9c2ee05825 100644 --- a/packages/plugins/i18n/server/src/services/permissions/conditions.ts +++ b/packages/plugins/i18n/server/src/services/permissions/conditions.ts @@ -5,7 +5,7 @@ const conditions = [ plugin: 'i18n', handler(user: any, options: any) { const { locales } = options.permission.properties || {}; - const { superAdminCode } = strapi.admin.services.role.constants; + const { superAdminCode } = strapi.service('admin::role').constants; const isSuperAdmin = user.roles.some((role: any) => role.code === superAdminCode); @@ -23,7 +23,7 @@ const conditions = [ ]; const registerI18nConditions = async () => { - const { conditionProvider } = strapi.admin.services.permission; + const { conditionProvider } = strapi.service('admin::permission'); await conditionProvider.registerMany(conditions); }; diff --git a/packages/plugins/i18n/server/src/services/permissions/engine.ts b/packages/plugins/i18n/server/src/services/permissions/engine.ts index 40c1d0ab5b..ed2f974f45 100644 --- a/packages/plugins/i18n/server/src/services/permissions/engine.ts +++ b/packages/plugins/i18n/server/src/services/permissions/engine.ts @@ -16,7 +16,7 @@ const willRegisterPermission = (context: any) => { const { permission, condition, user } = context; const { subject, properties } = permission; - const isSuperAdmin = strapi.admin.services.role.hasSuperAdminRole(user); + const isSuperAdmin = strapi.service('admin::role').hasSuperAdminRole(user); if (isSuperAdmin) { return; @@ -50,7 +50,7 @@ const willRegisterPermission = (context: any) => { }; const registerI18nPermissionsHandlers = () => { - const { engine } = strapi.admin.services.permission; + const { engine } = strapi.service('admin::permission'); engine.hooks['before-register.permission'].register(willRegisterPermission); }; diff --git a/packages/plugins/i18n/server/src/services/permissions/sections-builder.ts b/packages/plugins/i18n/server/src/services/permissions/sections-builder.ts index 34038e0bd8..5a900f09f3 100644 --- a/packages/plugins/i18n/server/src/services/permissions/sections-builder.ts +++ b/packages/plugins/i18n/server/src/services/permissions/sections-builder.ts @@ -10,7 +10,7 @@ import { getService } from '../../utils'; * @return {Promise} */ const localesPropertyHandler = async ({ action, section }: any) => { - const { actionProvider } = strapi.admin.services.permission; + const { actionProvider } = strapi.service('admin::permission'); const locales = await getService('locales').find(); @@ -36,7 +36,7 @@ const localesPropertyHandler = async ({ action, section }: any) => { }; const registerLocalesPropertyHandler = () => { - const { sectionsBuilder } = strapi.admin.services.permission; + const { sectionsBuilder } = strapi.service('admin::permission'); sectionsBuilder.addHandler('singleTypes', localesPropertyHandler); sectionsBuilder.addHandler('collectionTypes', localesPropertyHandler); diff --git a/packages/plugins/users-permissions/server/bootstrap/index.js b/packages/plugins/users-permissions/server/bootstrap/index.js index ed7e47358f..3f29094b6c 100644 --- a/packages/plugins/users-permissions/server/bootstrap/index.js +++ b/packages/plugins/users-permissions/server/bootstrap/index.js @@ -103,9 +103,9 @@ module.exports = async ({ strapi }) => { await initEmails(pluginStore); await initAdvancedOptions(pluginStore); - await strapi.admin.services.permission.actionProvider.registerMany( - usersPermissionsActions.actions - ); + await strapi + .service('admin::permission') + .actionProvider.registerMany(usersPermissionsActions.actions); await getService('users-permissions').initialize(); diff --git a/packages/plugins/users-permissions/server/controllers/content-manager-user.js b/packages/plugins/users-permissions/server/controllers/content-manager-user.js index 050a90d202..c0c6bb91ef 100644 --- a/packages/plugins/users-permissions/server/controllers/content-manager-user.js +++ b/packages/plugins/users-permissions/server/controllers/content-manager-user.js @@ -25,7 +25,9 @@ const findEntityAndCheckPermissions = async (ability, action, model, id) => { throw new NotFoundError(); } - const pm = strapi.admin.services.permission.createPermissionsManager({ ability, action, model }); + const pm = strapi + .service('admin::permission') + .createPermissionsManager({ ability, action, model }); if (pm.ability.cannot(pm.action, pm.toSubject(doc))) { throw new ForbiddenError(); @@ -47,7 +49,7 @@ module.exports = { const { email, username } = body; - const pm = strapi.admin.services.permission.createPermissionsManager({ + const pm = strapi.service('admin::permission').createPermissionsManager({ ability: userAbility, action: ACTIONS.create, model: userModel, diff --git a/packages/utils/api-tests/utils.js b/packages/utils/api-tests/utils.js index 2d9c829d14..3e33f788ec 100644 --- a/packages/utils/api-tests/utils.js +++ b/packages/utils/api-tests/utils.js @@ -9,29 +9,29 @@ const createUtils = (strapi) => { if (!user) { throw new Error('User not found'); } - const token = strapi.admin.services.token.createJwtToken(user); + const token = strapi.service('admin::token').createJwtToken(user); return { token, user }; }; - const findUser = strapi.admin.services.user.findOne; - const userExists = strapi.admin.services.user.exists; + const findUser = strapi.service('admin::user').findOne; + const userExists = strapi.service('admin::user').exists; const createUser = async (userInfo) => { - const superAdminRole = await strapi.admin.services.role.getSuperAdminWithUsersCount(); + const superAdminRole = await strapi.service('admin::role').getSuperAdminWithUsersCount(); if (superAdminRole.usersCount === 0) { const userRoles = _.uniq((userInfo.roles || []).concat(superAdminRole.id)); Object.assign(userInfo, { roles: userRoles }); } - return strapi.admin.services.user.create({ + return strapi.service('admin::user').create({ registrationToken: null, isActive: true, ...userInfo, }); }; - const deleteUserById = strapi.admin.services.user.deleteById; - const deleteUsersById = strapi.admin.services.user.deleteByIds; + const deleteUserById = strapi.service('admin::user').deleteById; + const deleteUsersById = strapi.service('admin::user').deleteByIds; const createUserIfNotExists = async (userInfo) => { const sanitizedUserInfo = _.pick(userInfo, ['email', 'id']); const exists = await userExists(sanitizedUserInfo); @@ -44,11 +44,11 @@ const createUtils = (strapi) => { return login(userCredentials); }; - const createRole = strapi.admin.services.role.create; - const getRole = strapi.admin.services.role.find; - const deleteRolesById = strapi.admin.services.role.deleteByIds; - const getSuperAdminRole = strapi.admin.services.role.getSuperAdmin; - const assignPermissionsToRole = strapi.admin.services.role.assignPermissions; + const createRole = strapi.service('admin::role').create; + const getRole = strapi.service('admin::role').find; + const deleteRolesById = strapi.service('admin::role').deleteByIds; + const getSuperAdminRole = strapi.service('admin::role').getSuperAdmin; + const assignPermissionsToRole = strapi.service('admin::role').assignPermissions; return { // Auth diff --git a/tests/api/core/admin/admin-api-token-crud.test.api.ts b/tests/api/core/admin/admin-api-token-crud.test.api.ts index c02ab28588..7b6045fafc 100644 --- a/tests/api/core/admin/admin-api-token-crud.test.api.ts +++ b/tests/api/core/admin/admin-api-token-crud.test.api.ts @@ -12,10 +12,10 @@ describe('Admin API Token v2 CRUD (api)', () => { let nowSpy; const deleteAllTokens = async () => { - const tokens = await strapi.admin.services['api-token'].list(); + const tokens = await strapi.service('admin::api-token').list(); const promises = []; tokens.forEach(({ id }) => { - promises.push(strapi.admin.services['api-token'].revoke(id)); + promises.push(strapi.service('admin::api-token').revoke(id)); }); await Promise.all(promises); }; diff --git a/tests/api/core/admin/admin-auth.test.api.js b/tests/api/core/admin/admin-auth.test.api.js index 0dc34835e8..ad656b0405 100644 --- a/tests/api/core/admin/admin-auth.test.api.js +++ b/tests/api/core/admin/admin-auth.test.api.js @@ -517,7 +517,7 @@ describe('Admin Auth End to End', () => { describe('POST /forgot-password', () => { test('Always returns en empty response', async () => { - global.strapi.admin.services.auth.forgotPassword = jest.fn(() => {}); + global.strapi.service('admin::auth').forgotPassword = jest.fn(() => {}); const res = await rq({ url: '/admin/forgot-password', diff --git a/tests/api/core/admin/admin-permissions-custom-conditions.test.api.js b/tests/api/core/admin/admin-permissions-custom-conditions.test.api.js index 662b191834..0feba3228c 100644 --- a/tests/api/core/admin/admin-permissions-custom-conditions.test.api.js +++ b/tests/api/core/admin/admin-permissions-custom-conditions.test.api.js @@ -172,9 +172,9 @@ describe.skip('Admin Permissions - Conditions', () => { strapi = await createStrapiInstance({ bootstrap: ({ strapi }) => { // Create custom conditions - return strapi.admin.services.permission.conditionProvider.registerMany( - localTestData.customConditions - ); + return strapi + .service('admin::permission') + .conditionProvider.registerMany(localTestData.customConditions); }, }); utils = createUtils(strapi); diff --git a/tests/api/core/admin/admin-transfer-token-crud.test.api.ts b/tests/api/core/admin/admin-transfer-token-crud.test.api.ts index 3a01d79f1b..3a0d06199b 100644 --- a/tests/api/core/admin/admin-transfer-token-crud.test.api.ts +++ b/tests/api/core/admin/admin-transfer-token-crud.test.api.ts @@ -12,10 +12,10 @@ describe('Admin Transfer Token CRUD (api)', () => { const FULL_ACCESS = ['push', 'pull']; const deleteAllTokens = async () => { - const tokens = await strapi.admin.services.transfer.token.list(); + const tokens = await strapi.service('admin::transfer').token.list(); const promises = []; tokens.forEach(({ id }) => { - promises.push(strapi.admin.services.transfer.token.revoke(id)); + promises.push(strapi.service('admin::transfer').token.revoke(id)); }); await Promise.all(promises); }; diff --git a/tests/cli/app-template/template/src/index.js b/tests/cli/app-template/template/src/index.js index 8320d5ff43..dd54201a61 100644 --- a/tests/cli/app-template/template/src/index.js +++ b/tests/cli/app-template/template/src/index.js @@ -30,7 +30,7 @@ module.exports = { * @returns {Promise} */ const createTestTransferToken = async (strapi) => { - const { token: transferTokenService } = strapi.admin.services.transfer; + const { token: transferTokenService } = strapi.service('admin::transfer'); const accessKeyHash = transferTokenService.hash(CUSTOM_TRANSFER_TOKEN_ACCESS_KEY); const exists = await transferTokenService.exists({ accessKey: accessKeyHash }); diff --git a/tests/e2e/app-template/template/src/create-transfer-token.js b/tests/e2e/app-template/template/src/create-transfer-token.js index c55881f787..ef7f7a2a3f 100644 --- a/tests/e2e/app-template/template/src/create-transfer-token.js +++ b/tests/e2e/app-template/template/src/create-transfer-token.js @@ -8,7 +8,7 @@ const { CUSTOM_TRANSFER_TOKEN_ACCESS_KEY } = require('./constants'); * @returns {Promise} */ const createTestTransferToken = async (strapi) => { - const { token: transferTokenService } = strapi.admin.services.transfer; + const { token: transferTokenService } = strapi.service('admin::transfer'); const accessKeyHash = transferTokenService.hash(CUSTOM_TRANSFER_TOKEN_ACCESS_KEY); const exists = await transferTokenService.exists({ accessKey: accessKeyHash });