diff --git a/packages/core/admin/server/controllers/__tests__/role.test.js b/packages/core/admin/server/controllers/__tests__/role.test.js index e1cc628b08..0592626c88 100644 --- a/packages/core/admin/server/controllers/__tests__/role.test.js +++ b/packages/core/admin/server/controllers/__tests__/role.test.js @@ -108,7 +108,7 @@ describe('Role controller', () => { role: { findOne, }, - 'user-hash': { + user: { hashAdminUser, }, }, @@ -155,7 +155,7 @@ describe('Role controller', () => { actionProvider: { get: jest.fn() }, conditionProvider: { values: jest.fn(() => []) }, }, - 'user-hash': { + user: { hashAdminUser, }, }, @@ -226,7 +226,7 @@ describe('Role controller', () => { })), }, }, - 'user-hash': { + user: { hashAdminUser, }, }, diff --git a/packages/core/admin/server/controllers/__tests__/user.test.js b/packages/core/admin/server/controllers/__tests__/user.test.js index 874b73a16a..5d1922742f 100644 --- a/packages/core/admin/server/controllers/__tests__/user.test.js +++ b/packages/core/admin/server/controllers/__tests__/user.test.js @@ -28,8 +28,6 @@ describe('User Controller', () => { services: { user: { exists, - }, - 'user-hash': { hashAdminUser, }, }, @@ -68,8 +66,6 @@ describe('User Controller', () => { exists, create, sanitizeUser, - }, - 'user-hash': { hashAdminUser, }, }, diff --git a/packages/core/admin/server/controllers/authentication.js b/packages/core/admin/server/controllers/authentication.js index a296ebd205..296cd1edca 100644 --- a/packages/core/admin/server/controllers/authentication.js +++ b/packages/core/admin/server/controllers/authentication.js @@ -122,7 +122,7 @@ module.exports = { roles: superAdminRole ? [superAdminRole.id] : [], }); - const adminUserId = await getService('user-hash').hashAdminUser(user); + const adminUserId = await getService('user').hashAdminUser(user); strapi.telemetry.send(adminUserId, 'didCreateFirstAdmin'); diff --git a/packages/core/admin/server/controllers/role.js b/packages/core/admin/server/controllers/role.js index 3a6efabfc2..1e02ae4dbe 100644 --- a/packages/core/admin/server/controllers/role.js +++ b/packages/core/admin/server/controllers/role.js @@ -98,7 +98,7 @@ module.exports = { async updatePermissions(ctx) { const { id } = ctx.params; const { body: input } = ctx.request; - const adminUserId = await getService('user-hash').hashAdminUser(ctx.state.user); + const adminUserId = await getService('user').hashAdminUser(ctx.state.user); const { findOne, assignPermissions } = getService('role'); const { sanitizePermission, actionProvider } = getService('permission'); diff --git a/packages/core/admin/server/controllers/user.js b/packages/core/admin/server/controllers/user.js index 762d728d40..f40638a5cc 100644 --- a/packages/core/admin/server/controllers/user.js +++ b/packages/core/admin/server/controllers/user.js @@ -13,7 +13,7 @@ const { getService } = require('../utils'); module.exports = { async create(ctx) { const { body } = ctx.request; - const adminUserId = await getService('user-hash').hashAdminUser(ctx.state.user); + const adminUserId = await getService('user').hashAdminUser(ctx.state.user); await validateUserCreationInput(body); diff --git a/packages/core/admin/server/services/index.js b/packages/core/admin/server/services/index.js index 9ad0264754..22f4819ce8 100644 --- a/packages/core/admin/server/services/index.js +++ b/packages/core/admin/server/services/index.js @@ -14,5 +14,4 @@ module.exports = { action: require('./action'), 'api-token': require('./api-token'), 'project-settings': require('./project-settings'), - 'user-hash': require('./user-hash'), }; diff --git a/packages/core/admin/server/services/user-hash.js b/packages/core/admin/server/services/user-hash.js deleted file mode 100644 index 25ff2ae935..0000000000 --- a/packages/core/admin/server/services/user-hash.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -const crypto = require('crypto'); - -module.exports = { - hashAdminUser(payload) { - if (typeof payload === 'string') { - return crypto.createHash('sha256').update(payload).digest('hex'); - } - - return crypto.createHash('sha256').update(payload.email).digest('hex'); - }, -}; diff --git a/packages/core/admin/server/services/user.js b/packages/core/admin/server/services/user.js index 4f5cf0da62..4ac32aca7d 100644 --- a/packages/core/admin/server/services/user.js +++ b/packages/core/admin/server/services/user.js @@ -2,6 +2,7 @@ const _ = require('lodash'); const { defaults } = require('lodash/fp'); +const crypto = require('crypto'); const { stringIncludes } = require('@strapi/utils'); const { ValidationError } = require('@strapi/utils').errors; const { createUser, hasSuperAdminRole } = require('../domain/user'); @@ -323,6 +324,14 @@ const getLanguagesInUse = async () => { return users.map((user) => user.preferedLanguage || 'en'); }; +const hashAdminUser = (payload) => { + if (typeof payload === 'string') { + return crypto.createHash('sha256').update(payload).digest('hex'); + } + + return crypto.createHash('sha256').update(payload.email).digest('hex'); +}; + module.exports = { create, updateById, @@ -341,4 +350,5 @@ module.exports = { displayWarningIfUsersDontHaveRole, resetPasswordByEmail, getLanguagesInUse, + hashAdminUser, }; diff --git a/packages/core/content-manager/server/controllers/__tests__/single-types.test.js b/packages/core/content-manager/server/controllers/__tests__/single-types.test.js index 7f904d18e9..1075f267e9 100644 --- a/packages/core/content-manager/server/controllers/__tests__/single-types.test.js +++ b/packages/core/content-manager/server/controllers/__tests__/single-types.test.js @@ -112,7 +112,7 @@ describe('Single Types', () => { permission: { createPermissionsManager, }, - 'user-hash': { + user: { hashAdminUser, }, }, diff --git a/packages/core/content-manager/server/controllers/collection-types.js b/packages/core/content-manager/server/controllers/collection-types.js index 1085ef6186..941ce582d1 100644 --- a/packages/core/content-manager/server/controllers/collection-types.js +++ b/packages/core/content-manager/server/controllers/collection-types.js @@ -65,7 +65,7 @@ module.exports = { const { userAbility, user } = ctx.state; const { model } = ctx.params; const { body } = ctx.request; - const adminUserId = strapi.service('admin::user-hash').hashAdminUser(ctx.state.user); + const adminUserId = strapi.service('admin::user').hashAdminUser(ctx.state.user); const totalEntries = await strapi.query(model).count(); diff --git a/packages/core/content-manager/server/controllers/content-types.js b/packages/core/content-manager/server/controllers/content-types.js index 45c17da347..fe29df2970 100644 --- a/packages/core/content-manager/server/controllers/content-types.js +++ b/packages/core/content-manager/server/controllers/content-types.js @@ -75,7 +75,7 @@ module.exports = { const { userAbility } = ctx.state; const { uid } = ctx.params; const { body } = ctx.request; - const adminUserId = strapi.service('admin::user-hash').hashAdminUser(ctx.state.user); + const adminUserId = strapi.service('admin::user').hashAdminUser(ctx.state.user); const contentTypeService = getService('content-types'); const metricsService = getService('metrics'); diff --git a/packages/core/content-manager/server/controllers/single-types.js b/packages/core/content-manager/server/controllers/single-types.js index bf4e678941..9cd2296e78 100644 --- a/packages/core/content-manager/server/controllers/single-types.js +++ b/packages/core/content-manager/server/controllers/single-types.js @@ -46,7 +46,7 @@ module.exports = { const { user, userAbility } = ctx.state; const { model } = ctx.params; const { body, query } = ctx.request; - const adminUserId = strapi.service('admin::user-hash').hashAdminUser(ctx.state.user); + const adminUserId = strapi.service('admin::user').hashAdminUser(ctx.state.user); const entityManager = getService('entity-manager'); const permissionChecker = getService('permission-checker').create({ userAbility, model }); diff --git a/packages/core/content-type-builder/server/controllers/content-types.js b/packages/core/content-type-builder/server/controllers/content-types.js index c9e2a3d3b8..190df9cdde 100644 --- a/packages/core/content-type-builder/server/controllers/content-types.js +++ b/packages/core/content-type-builder/server/controllers/content-types.js @@ -47,7 +47,7 @@ module.exports = { async createContentType(ctx) { const { body } = ctx.request; - const adminUserId = strapi.service('admin::user-hash').hashAdminUser(ctx.state.user); + const adminUserId = strapi.service('admin::user').hashAdminUser(ctx.state.user); try { await validateContentTypeInput(body); diff --git a/packages/core/upload/server/controllers/admin-settings.js b/packages/core/upload/server/controllers/admin-settings.js index 581479c86f..34276fac41 100644 --- a/packages/core/upload/server/controllers/admin-settings.js +++ b/packages/core/upload/server/controllers/admin-settings.js @@ -16,7 +16,7 @@ module.exports = { } const data = await validateSettings(body); - const adminUserId = strapi.service('admin::user-hash').hashAdminUser(ctx.state.user.email); + const adminUserId = strapi.service('admin::user').hashAdminUser(ctx.state.user.email); await getService('upload').setSettings(data, adminUserId); diff --git a/packages/core/upload/server/controllers/admin-upload.js b/packages/core/upload/server/controllers/admin-upload.js index 5a621770f5..3dce697ca3 100644 --- a/packages/core/upload/server/controllers/admin-upload.js +++ b/packages/core/upload/server/controllers/admin-upload.js @@ -23,7 +23,7 @@ module.exports = { id ); - user.adminUserId = strapi.service('admin::user-hash').hashAdminUser(user); + user.adminUserId = strapi.service('admin::user').hashAdminUser(user); const data = await validateUploadBody(body); const file = await uploadService.updateFileInfo(id, data.fileInfo, { user }); @@ -50,7 +50,7 @@ module.exports = { throw new ApplicationError('Cannot replace a file with multiple ones'); } - user.adminUserId = strapi.service('admin::user-hash').hashAdminUser(user); + user.adminUserId = strapi.service('admin::user').hashAdminUser(user); const data = await validateUploadBody(body); const replacedFiles = await uploadService.replace(id, { data, file: files }, { user }); @@ -75,7 +75,7 @@ module.exports = { return ctx.forbidden(); } - user.adminUserId = strapi.service('admin::user-hash').hashAdminUser(user); + user.adminUserId = strapi.service('admin::user').hashAdminUser(user); const data = await validateUploadBody(body); const uploadedFiles = await uploadService.upload({ data, files }, { user });