From 63dfb6947efe598d91f570849a40d230cd706812 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Wed, 4 Sep 2024 11:07:45 +0000 Subject: [PATCH] feat: make role name unique and remove key usage --- packages/backend/bin/database/utils.js | 2 +- .../api/v1/admin/apps/create-auth-client.ee.test.js | 2 +- .../api/v1/admin/apps/create-config.ee.test.js | 2 +- .../api/v1/admin/apps/get-auth-client.ee.test.js | 2 +- .../api/v1/admin/apps/get-auth-clients.ee.test.js | 2 +- .../api/v1/admin/apps/update-auth-client.ee.test.js | 2 +- .../api/v1/admin/apps/update-config.ee.test.js | 2 +- .../api/v1/admin/config/update.ee.test.js | 2 +- .../permissions/get-permissions-catalog.ee.test.js | 2 +- .../api/v1/admin/roles/create-role.ee.js | 3 --- .../api/v1/admin/roles/create-role.ee.test.js | 13 +++++++------ .../api/v1/admin/roles/get-role.ee.test.js | 2 +- .../api/v1/admin/roles/get-roles.ee.test.js | 4 ++-- .../create-saml-auth-provider.ee.test.js | 2 +- .../get-role-mappings.ee.test.js | 2 +- .../get-saml-auth-provider.ee.test.js | 2 +- .../get-saml-auth-providers.ee.test.js | 2 +- .../update-saml-auth-provider.ee.test.js | 2 +- .../api/v1/admin/users/delete-user.test.js | 2 +- .../api/v1/admin/users/get-user.ee.test.js | 2 +- .../api/v1/admin/users/get-users.ee.test.js | 3 +-- .../api/v1/admin/users/update-user.ee.test.js | 2 +- .../api/v1/installation/users/create-user.test.js | 11 +++++------ ...e.js => 20240903110620_make_role_name_unique.js} | 4 ++-- .../20240904091615_remove_key_column_in_roles.js | 11 +++++++++++ .../backend/src/graphql/mutations/create-user.ee.js | 2 +- .../src/graphql/mutations/register-user.ee.js | 2 +- packages/backend/src/models/role.js | 11 +++-------- packages/backend/test/factories/role.js | 2 -- .../mocks/rest/api/v1/admin/roles/create-role.ee.js | 1 - .../mocks/rest/api/v1/admin/roles/get-role.ee.js | 1 - .../mocks/rest/api/v1/admin/roles/get-roles.ee.js | 1 - .../mocks/rest/api/v1/admin/users/update-user.js | 1 - 33 files changed, 51 insertions(+), 55 deletions(-) rename packages/backend/src/db/migrations/{20240903110620_make_role_key_unique.js => 20240903110620_make_role_name_unique.js} (79%) create mode 100644 packages/backend/src/db/migrations/20240904091615_remove_key_column_in_roles.js diff --git a/packages/backend/bin/database/utils.js b/packages/backend/bin/database/utils.js index 0a3ae129..5b1ca166 100644 --- a/packages/backend/bin/database/utils.js +++ b/packages/backend/bin/database/utils.js @@ -10,7 +10,7 @@ import process from 'process'; async function fetchAdminRole() { const role = await Role.query() .where({ - key: 'admin', + name: 'Admin', }) .limit(1) .first(); diff --git a/packages/backend/src/controllers/api/v1/admin/apps/create-auth-client.ee.test.js b/packages/backend/src/controllers/api/v1/admin/apps/create-auth-client.ee.test.js index 18728650..57afc704 100644 --- a/packages/backend/src/controllers/api/v1/admin/apps/create-auth-client.ee.test.js +++ b/packages/backend/src/controllers/api/v1/admin/apps/create-auth-client.ee.test.js @@ -15,7 +15,7 @@ describe('POST /api/v1/admin/apps/:appKey/auth-clients', () => { beforeEach(async () => { vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true); - adminRole = await createRole({ key: 'admin' }); + adminRole = await createRole({ name: 'Admin' }); currentUser = await createUser({ roleId: adminRole.id }); token = await createAuthTokenByUserId(currentUser.id); diff --git a/packages/backend/src/controllers/api/v1/admin/apps/create-config.ee.test.js b/packages/backend/src/controllers/api/v1/admin/apps/create-config.ee.test.js index 6499e71b..ad9b7600 100644 --- a/packages/backend/src/controllers/api/v1/admin/apps/create-config.ee.test.js +++ b/packages/backend/src/controllers/api/v1/admin/apps/create-config.ee.test.js @@ -15,7 +15,7 @@ describe('POST /api/v1/admin/apps/:appKey/config', () => { beforeEach(async () => { vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true); - adminRole = await createRole({ key: 'admin' }); + adminRole = await createRole({ name: 'Admin' }); currentUser = await createUser({ roleId: adminRole.id }); token = await createAuthTokenByUserId(currentUser.id); diff --git a/packages/backend/src/controllers/api/v1/admin/apps/get-auth-client.ee.test.js b/packages/backend/src/controllers/api/v1/admin/apps/get-auth-client.ee.test.js index 581c49e7..a3b1c6c4 100644 --- a/packages/backend/src/controllers/api/v1/admin/apps/get-auth-client.ee.test.js +++ b/packages/backend/src/controllers/api/v1/admin/apps/get-auth-client.ee.test.js @@ -15,7 +15,7 @@ describe('GET /api/v1/admin/apps/:appKey/auth-clients/:appAuthClientId', () => { beforeEach(async () => { vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true); - adminRole = await createRole({ key: 'admin' }); + adminRole = await createRole({ name: 'Admin' }); currentUser = await createUser({ roleId: adminRole.id }); currentAppAuthClient = await createAppAuthClient({ diff --git a/packages/backend/src/controllers/api/v1/admin/apps/get-auth-clients.ee.test.js b/packages/backend/src/controllers/api/v1/admin/apps/get-auth-clients.ee.test.js index 0dfd472c..58c25bff 100644 --- a/packages/backend/src/controllers/api/v1/admin/apps/get-auth-clients.ee.test.js +++ b/packages/backend/src/controllers/api/v1/admin/apps/get-auth-clients.ee.test.js @@ -14,7 +14,7 @@ describe('GET /api/v1/admin/apps/:appKey/auth-clients', () => { beforeEach(async () => { vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true); - adminRole = await createRole({ key: 'admin' }); + adminRole = await createRole({ name: 'Admin' }); currentUser = await createUser({ roleId: adminRole.id }); token = await createAuthTokenByUserId(currentUser.id); diff --git a/packages/backend/src/controllers/api/v1/admin/apps/update-auth-client.ee.test.js b/packages/backend/src/controllers/api/v1/admin/apps/update-auth-client.ee.test.js index 2284bde0..f1a7bccd 100644 --- a/packages/backend/src/controllers/api/v1/admin/apps/update-auth-client.ee.test.js +++ b/packages/backend/src/controllers/api/v1/admin/apps/update-auth-client.ee.test.js @@ -17,7 +17,7 @@ describe('PATCH /api/v1/admin/apps/:appKey/auth-clients', () => { beforeEach(async () => { vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true); - adminRole = await createRole({ key: 'admin' }); + adminRole = await createRole({ name: 'Admin' }); currentUser = await createUser({ roleId: adminRole.id }); token = await createAuthTokenByUserId(currentUser.id); diff --git a/packages/backend/src/controllers/api/v1/admin/apps/update-config.ee.test.js b/packages/backend/src/controllers/api/v1/admin/apps/update-config.ee.test.js index a6cb0d07..20d7f8ae 100644 --- a/packages/backend/src/controllers/api/v1/admin/apps/update-config.ee.test.js +++ b/packages/backend/src/controllers/api/v1/admin/apps/update-config.ee.test.js @@ -15,7 +15,7 @@ describe('PATCH /api/v1/admin/apps/:appKey/config', () => { beforeEach(async () => { vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true); - adminRole = await createRole({ key: 'admin' }); + adminRole = await createRole({ name: 'Admin' }); currentUser = await createUser({ roleId: adminRole.id }); token = await createAuthTokenByUserId(currentUser.id); diff --git a/packages/backend/src/controllers/api/v1/admin/config/update.ee.test.js b/packages/backend/src/controllers/api/v1/admin/config/update.ee.test.js index de9a6bb9..465978de 100644 --- a/packages/backend/src/controllers/api/v1/admin/config/update.ee.test.js +++ b/packages/backend/src/controllers/api/v1/admin/config/update.ee.test.js @@ -14,7 +14,7 @@ describe('PATCH /api/v1/admin/config', () => { beforeEach(async () => { vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true); - adminRole = await createRole({ key: 'admin' }); + adminRole = await createRole({ name: 'Admin' }); currentUser = await createUser({ roleId: adminRole.id }); token = await createAuthTokenByUserId(currentUser.id); diff --git a/packages/backend/src/controllers/api/v1/admin/permissions/get-permissions-catalog.ee.test.js b/packages/backend/src/controllers/api/v1/admin/permissions/get-permissions-catalog.ee.test.js index bbeba16b..cac504fc 100644 --- a/packages/backend/src/controllers/api/v1/admin/permissions/get-permissions-catalog.ee.test.js +++ b/packages/backend/src/controllers/api/v1/admin/permissions/get-permissions-catalog.ee.test.js @@ -11,7 +11,7 @@ describe('GET /api/v1/admin/permissions/catalog', () => { let role, currentUser, token; beforeEach(async () => { - role = await createRole({ key: 'admin' }); + role = await createRole({ name: 'Admin' }); currentUser = await createUser({ roleId: role.id }); token = await createAuthTokenByUserId(currentUser.id); diff --git a/packages/backend/src/controllers/api/v1/admin/roles/create-role.ee.js b/packages/backend/src/controllers/api/v1/admin/roles/create-role.ee.js index 02ae7b82..124de644 100644 --- a/packages/backend/src/controllers/api/v1/admin/roles/create-role.ee.js +++ b/packages/backend/src/controllers/api/v1/admin/roles/create-role.ee.js @@ -1,4 +1,3 @@ -import kebabCase from 'lodash/kebabCase.js'; import { renderObject } from '../../../../../helpers/renderer.js'; import Role from '../../../../../models/role.js'; @@ -14,10 +13,8 @@ export default async (request, response) => { const roleParams = (request) => { const { name, description, permissions } = request.body; - const key = kebabCase(name); return { - key, name, description, permissions, diff --git a/packages/backend/src/controllers/api/v1/admin/roles/create-role.ee.test.js b/packages/backend/src/controllers/api/v1/admin/roles/create-role.ee.test.js index e31df92d..6dcd5bcf 100644 --- a/packages/backend/src/controllers/api/v1/admin/roles/create-role.ee.test.js +++ b/packages/backend/src/controllers/api/v1/admin/roles/create-role.ee.test.js @@ -14,7 +14,7 @@ describe('POST /api/v1/admin/roles', () => { beforeEach(async () => { vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true); - role = await createRole({ key: 'admin' }); + role = await createRole({ name: 'Admin' }); currentUser = await createUser({ roleId: role.id }); token = await createAuthTokenByUserId(currentUser.id); @@ -41,7 +41,7 @@ describe('POST /api/v1/admin/roles', () => { const createdRole = await Role.query() .withGraphFetched({ permissions: true }) - .findOne({ key: 'viewer' }) + .findOne({ name: 'Viewer' }) .throwIfNotFound(); const expectedPayload = await createRoleMock( @@ -61,7 +61,7 @@ describe('POST /api/v1/admin/roles', () => { expect(response.body).toEqual(expectedPayload); }); - it('should return unprocessable entity response for invalid data', async () => { + it('should return unprocessable entity response for invalid role data', async () => { const roleData = { description: '', permissions: [], @@ -76,7 +76,6 @@ describe('POST /api/v1/admin/roles', () => { expect(response.body).toStrictEqual({ errors: { name: ["must have required property 'name'"], - key: ['must NOT have fewer than 1 characters'], }, meta: { type: 'ModelValidation', @@ -85,8 +84,10 @@ describe('POST /api/v1/admin/roles', () => { }); it('should return unprocessable entity response for duplicate role', async () => { + await createRole({ name: 'Viewer' }); + const roleData = { - name: 'admin', + name: 'Viewer', permissions: [], }; @@ -98,7 +99,7 @@ describe('POST /api/v1/admin/roles', () => { expect(response.body).toStrictEqual({ errors: { - key: ["'key' must be unique."], + name: ["'name' must be unique."], }, meta: { type: 'UniqueViolationError', diff --git a/packages/backend/src/controllers/api/v1/admin/roles/get-role.ee.test.js b/packages/backend/src/controllers/api/v1/admin/roles/get-role.ee.test.js index 020539f4..15c688f7 100644 --- a/packages/backend/src/controllers/api/v1/admin/roles/get-role.ee.test.js +++ b/packages/backend/src/controllers/api/v1/admin/roles/get-role.ee.test.js @@ -13,7 +13,7 @@ describe('GET /api/v1/admin/roles/:roleId', () => { let role, currentUser, token, permissionOne, permissionTwo; beforeEach(async () => { - role = await createRole({ key: 'admin' }); + role = await createRole({ name: 'Admin' }); permissionOne = await createPermission({ roleId: role.id }); permissionTwo = await createPermission({ roleId: role.id }); currentUser = await createUser({ roleId: role.id }); diff --git a/packages/backend/src/controllers/api/v1/admin/roles/get-roles.ee.test.js b/packages/backend/src/controllers/api/v1/admin/roles/get-roles.ee.test.js index 6f22f50b..e07a22ea 100644 --- a/packages/backend/src/controllers/api/v1/admin/roles/get-roles.ee.test.js +++ b/packages/backend/src/controllers/api/v1/admin/roles/get-roles.ee.test.js @@ -11,8 +11,8 @@ describe('GET /api/v1/admin/roles', () => { let roleOne, roleTwo, currentUser, token; beforeEach(async () => { - roleOne = await createRole({ key: 'admin' }); - roleTwo = await createRole({ key: 'user' }); + roleOne = await createRole({ name: 'Admin' }); + roleTwo = await createRole({ name: 'User' }); currentUser = await createUser({ roleId: roleOne.id }); token = await createAuthTokenByUserId(currentUser.id); diff --git a/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/create-saml-auth-provider.ee.test.js b/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/create-saml-auth-provider.ee.test.js index 517b59d6..eff660d9 100644 --- a/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/create-saml-auth-provider.ee.test.js +++ b/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/create-saml-auth-provider.ee.test.js @@ -13,7 +13,7 @@ describe('POST /api/v1/admin/saml-auth-provider', () => { beforeEach(async () => { vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true); - role = await createRole({ key: 'admin' }); + role = await createRole({ name: 'Admin' }); currentUser = await createUser({ roleId: role.id }); token = await createAuthTokenByUserId(currentUser.id); diff --git a/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/get-role-mappings.ee.test.js b/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/get-role-mappings.ee.test.js index 42f37a3a..e9c54912 100644 --- a/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/get-role-mappings.ee.test.js +++ b/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/get-role-mappings.ee.test.js @@ -13,7 +13,7 @@ describe('GET /api/v1/admin/saml-auth-providers/:samlAuthProviderId/role-mapping let roleMappingOne, roleMappingTwo, samlAuthProvider, currentUser, token; beforeEach(async () => { - const role = await createRole({ key: 'admin' }); + const role = await createRole({ name: 'Admin' }); currentUser = await createUser({ roleId: role.id }); samlAuthProvider = await createSamlAuthProvider(); diff --git a/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/get-saml-auth-provider.ee.test.js b/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/get-saml-auth-provider.ee.test.js index adddb53d..de12c036 100644 --- a/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/get-saml-auth-provider.ee.test.js +++ b/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/get-saml-auth-provider.ee.test.js @@ -13,7 +13,7 @@ describe('GET /api/v1/admin/saml-auth-provider/:samlAuthProviderId', () => { let samlAuthProvider, currentUser, token; beforeEach(async () => { - const role = await createRole({ key: 'admin' }); + const role = await createRole({ name: 'Admin' }); currentUser = await createUser({ roleId: role.id }); samlAuthProvider = await createSamlAuthProvider(); diff --git a/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/get-saml-auth-providers.ee.test.js b/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/get-saml-auth-providers.ee.test.js index ca2106e2..0818f4da 100644 --- a/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/get-saml-auth-providers.ee.test.js +++ b/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/get-saml-auth-providers.ee.test.js @@ -12,7 +12,7 @@ describe('GET /api/v1/admin/saml-auth-providers', () => { let samlAuthProviderOne, samlAuthProviderTwo, currentUser, token; beforeEach(async () => { - const role = await createRole({ key: 'admin' }); + const role = await createRole({ name: 'Admin' }); currentUser = await createUser({ roleId: role.id }); samlAuthProviderOne = await createSamlAuthProvider(); diff --git a/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/update-saml-auth-provider.ee.test.js b/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/update-saml-auth-provider.ee.test.js index f8c858f1..d3fa960f 100644 --- a/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/update-saml-auth-provider.ee.test.js +++ b/packages/backend/src/controllers/api/v1/admin/saml-auth-providers/update-saml-auth-provider.ee.test.js @@ -15,7 +15,7 @@ describe('PATCH /api/v1/admin/saml-auth-provider/:samlAuthProviderId', () => { beforeEach(async () => { vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true); - role = await createRole({ key: 'admin' }); + role = await createRole({ name: 'Admin' }); currentUser = await createUser({ roleId: role.id }); token = await createAuthTokenByUserId(currentUser.id); diff --git a/packages/backend/src/controllers/api/v1/admin/users/delete-user.test.js b/packages/backend/src/controllers/api/v1/admin/users/delete-user.test.js index 8e19a4c3..9ef9f058 100644 --- a/packages/backend/src/controllers/api/v1/admin/users/delete-user.test.js +++ b/packages/backend/src/controllers/api/v1/admin/users/delete-user.test.js @@ -10,7 +10,7 @@ describe('DELETE /api/v1/admin/users/:userId', () => { let currentUser, currentUserRole, anotherUser, token; beforeEach(async () => { - currentUserRole = await createRole({ key: 'admin' }); + currentUserRole = await createRole({ name: 'Admin' }); currentUser = await createUser({ roleId: currentUserRole.id }); anotherUser = await createUser(); diff --git a/packages/backend/src/controllers/api/v1/admin/users/get-user.ee.test.js b/packages/backend/src/controllers/api/v1/admin/users/get-user.ee.test.js index 93ee5053..2ed6e9e8 100644 --- a/packages/backend/src/controllers/api/v1/admin/users/get-user.ee.test.js +++ b/packages/backend/src/controllers/api/v1/admin/users/get-user.ee.test.js @@ -12,7 +12,7 @@ describe('GET /api/v1/admin/users/:userId', () => { let currentUser, currentUserRole, anotherUser, anotherUserRole, token; beforeEach(async () => { - currentUserRole = await createRole({ key: 'admin' }); + currentUserRole = await createRole({ name: 'Admin' }); currentUser = await createUser({ roleId: currentUserRole.id }); anotherUser = await createUser(); diff --git a/packages/backend/src/controllers/api/v1/admin/users/get-users.ee.test.js b/packages/backend/src/controllers/api/v1/admin/users/get-users.ee.test.js index a7528de0..f3f0bcb7 100644 --- a/packages/backend/src/controllers/api/v1/admin/users/get-users.ee.test.js +++ b/packages/backend/src/controllers/api/v1/admin/users/get-users.ee.test.js @@ -10,7 +10,7 @@ describe('GET /api/v1/admin/users', () => { let currentUser, currentUserRole, anotherUser, anotherUserRole, token; beforeEach(async () => { - currentUserRole = await createRole({ key: 'admin' }); + currentUserRole = await createRole({ name: 'Admin' }); currentUser = await createUser({ roleId: currentUserRole.id, @@ -18,7 +18,6 @@ describe('GET /api/v1/admin/users', () => { }); anotherUserRole = await createRole({ - key: 'anotherUser', name: 'Another user role', }); diff --git a/packages/backend/src/controllers/api/v1/admin/users/update-user.ee.test.js b/packages/backend/src/controllers/api/v1/admin/users/update-user.ee.test.js index 67fd8ecc..a5f4d26b 100644 --- a/packages/backend/src/controllers/api/v1/admin/users/update-user.ee.test.js +++ b/packages/backend/src/controllers/api/v1/admin/users/update-user.ee.test.js @@ -11,7 +11,7 @@ describe('PATCH /api/v1/admin/users/:userId', () => { let currentUser, adminRole, token; beforeEach(async () => { - adminRole = await createRole({ key: 'admin' }); + adminRole = await createRole({ name: 'Admin' }); currentUser = await createUser({ roleId: adminRole.id }); token = await createAuthTokenByUserId(currentUser.id); diff --git a/packages/backend/src/controllers/api/v1/installation/users/create-user.test.js b/packages/backend/src/controllers/api/v1/installation/users/create-user.test.js index a157dbb3..9c4d9bc6 100644 --- a/packages/backend/src/controllers/api/v1/installation/users/create-user.test.js +++ b/packages/backend/src/controllers/api/v1/installation/users/create-user.test.js @@ -13,8 +13,7 @@ describe('POST /api/v1/installation/users', () => { beforeEach(async () => { adminRole = await createRole({ name: 'Admin', - key: 'admin', - }) + }); }); describe('for incomplete installations', () => { @@ -26,7 +25,7 @@ describe('POST /api/v1/installation/users', () => { .send({ email: 'user@automatisch.io', password: 'password', - fullName: 'Initial admin' + fullName: 'Initial admin', }) .expect(204); @@ -48,7 +47,7 @@ describe('POST /api/v1/installation/users', () => { .send({ email: 'user@automatisch.io', password: 'password', - fullName: 'Initial admin' + fullName: 'Initial admin', }) .expect(403); @@ -71,7 +70,7 @@ describe('POST /api/v1/installation/users', () => { .send({ email: 'user@automatisch.io', password: 'password', - fullName: 'Initial admin' + fullName: 'Initial admin', }) .expect(403); @@ -80,5 +79,5 @@ describe('POST /api/v1/installation/users', () => { expect(user).toBeUndefined(); expect(await Config.isInstallationCompleted()).toBe(true); }); - }) + }); }); diff --git a/packages/backend/src/db/migrations/20240903110620_make_role_key_unique.js b/packages/backend/src/db/migrations/20240903110620_make_role_name_unique.js similarity index 79% rename from packages/backend/src/db/migrations/20240903110620_make_role_key_unique.js rename to packages/backend/src/db/migrations/20240903110620_make_role_name_unique.js index 666ff0a7..bdccb76a 100644 --- a/packages/backend/src/db/migrations/20240903110620_make_role_key_unique.js +++ b/packages/backend/src/db/migrations/20240903110620_make_role_name_unique.js @@ -1,11 +1,11 @@ export async function up(knex) { return await knex.schema.alterTable('roles', (table) => { - table.unique('key'); + table.unique('name'); }); } export async function down(knex) { return await knex.schema.alterTable('roles', function (table) { - table.dropUnique('key'); + table.dropUnique('name'); }); } diff --git a/packages/backend/src/db/migrations/20240904091615_remove_key_column_in_roles.js b/packages/backend/src/db/migrations/20240904091615_remove_key_column_in_roles.js new file mode 100644 index 00000000..b80ea64e --- /dev/null +++ b/packages/backend/src/db/migrations/20240904091615_remove_key_column_in_roles.js @@ -0,0 +1,11 @@ +export async function up(knex) { + return await knex.schema.alterTable('roles', (table) => { + table.dropColumn('key'); + }); +} + +export async function down(knex) { + return await knex.schema.alterTable('roles', function (table) { + table.string('key').notNullable(); + }); +} diff --git a/packages/backend/src/graphql/mutations/create-user.ee.js b/packages/backend/src/graphql/mutations/create-user.ee.js index 13fd2f17..2c3fd3fc 100644 --- a/packages/backend/src/graphql/mutations/create-user.ee.js +++ b/packages/backend/src/graphql/mutations/create-user.ee.js @@ -32,7 +32,7 @@ const createUser = async (_parent, params, context) => { userPayload.roleId = params.input.role.id; } catch { // void - const role = await Role.query().findOne({ key: 'admin' }); + const role = await Role.findAdmin(); userPayload.roleId = role.id; } diff --git a/packages/backend/src/graphql/mutations/register-user.ee.js b/packages/backend/src/graphql/mutations/register-user.ee.js index e734e763..c084af9b 100644 --- a/packages/backend/src/graphql/mutations/register-user.ee.js +++ b/packages/backend/src/graphql/mutations/register-user.ee.js @@ -15,7 +15,7 @@ const registerUser = async (_parent, params) => { throw new Error('User already exists!'); } - const role = await Role.query().findOne({ key: 'user' }); + const role = await Role.query().findOne({ name: 'User' }); const user = await User.query().insert({ fullName, diff --git a/packages/backend/src/models/role.js b/packages/backend/src/models/role.js index 08b19673..0334cb38 100644 --- a/packages/backend/src/models/role.js +++ b/packages/backend/src/models/role.js @@ -7,22 +7,17 @@ class Role extends Base { static jsonSchema = { type: 'object', - required: ['name', 'key'], + required: ['name'], properties: { id: { type: 'string', format: 'uuid' }, name: { type: 'string', minLength: 1 }, - key: { type: 'string', minLength: 1 }, description: { type: ['string', 'null'], maxLength: 255 }, createdAt: { type: 'string' }, updatedAt: { type: 'string' }, }, }; - static get virtualAttributes() { - return ['isAdmin']; - } - static relationMappings = () => ({ users: { relation: Base.HasManyRelation, @@ -43,11 +38,11 @@ class Role extends Base { }); get isAdmin() { - return this.key === 'admin'; + return this.name === 'Admin'; } static async findAdmin() { - return await this.query().findOne({ key: 'admin' }); + return await this.query().findOne({ name: 'Admin' }); } } diff --git a/packages/backend/test/factories/role.js b/packages/backend/test/factories/role.js index f6cf20c8..7db3eff2 100644 --- a/packages/backend/test/factories/role.js +++ b/packages/backend/test/factories/role.js @@ -3,10 +3,8 @@ import Role from '../../src/models/role'; export const createRole = async (params = {}) => { const name = faker.lorem.word(); - const key = name.toLowerCase(); params.name = params?.name || name; - params.key = params?.key || key; const role = await Role.query().insertAndFetch(params); diff --git a/packages/backend/test/mocks/rest/api/v1/admin/roles/create-role.ee.js b/packages/backend/test/mocks/rest/api/v1/admin/roles/create-role.ee.js index 9bcd604d..caa5b4c8 100644 --- a/packages/backend/test/mocks/rest/api/v1/admin/roles/create-role.ee.js +++ b/packages/backend/test/mocks/rest/api/v1/admin/roles/create-role.ee.js @@ -1,7 +1,6 @@ const createRoleMock = async (role, permissions = []) => { const data = { id: role.id, - key: role.key, name: role.name, isAdmin: role.isAdmin, description: role.description, diff --git a/packages/backend/test/mocks/rest/api/v1/admin/roles/get-role.ee.js b/packages/backend/test/mocks/rest/api/v1/admin/roles/get-role.ee.js index 05942763..df46557e 100644 --- a/packages/backend/test/mocks/rest/api/v1/admin/roles/get-role.ee.js +++ b/packages/backend/test/mocks/rest/api/v1/admin/roles/get-role.ee.js @@ -1,7 +1,6 @@ const getRoleMock = async (role, permissions) => { const data = { id: role.id, - key: role.key, name: role.name, isAdmin: role.isAdmin, description: role.description, diff --git a/packages/backend/test/mocks/rest/api/v1/admin/roles/get-roles.ee.js b/packages/backend/test/mocks/rest/api/v1/admin/roles/get-roles.ee.js index fdb7a05b..b37e2f7e 100644 --- a/packages/backend/test/mocks/rest/api/v1/admin/roles/get-roles.ee.js +++ b/packages/backend/test/mocks/rest/api/v1/admin/roles/get-roles.ee.js @@ -2,7 +2,6 @@ const getRolesMock = async (roles) => { const data = roles.map((role) => { return { id: role.id, - key: role.key, name: role.name, isAdmin: role.isAdmin, description: role.description, diff --git a/packages/backend/test/mocks/rest/api/v1/admin/users/update-user.js b/packages/backend/test/mocks/rest/api/v1/admin/users/update-user.js index bc692875..f09b2a15 100644 --- a/packages/backend/test/mocks/rest/api/v1/admin/users/update-user.js +++ b/packages/backend/test/mocks/rest/api/v1/admin/users/update-user.js @@ -9,7 +9,6 @@ const updateUserMock = (user, role) => { updatedAt: user.updatedAt.getTime(), role: { id: role.id, - key: role.key, name: role.name, isAdmin: role.isAdmin, createdAt: role.createdAt.getTime(),