From 19e4a6de4dc5f48264b117c8ca61935f1b8d60ab Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Wed, 18 Sep 2024 14:43:25 +0800 Subject: [PATCH] misc: added helpful error message --- .../services/permission/permission-service.ts | 2 +- .../group-project/group-project-service.ts | 24 +++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/backend/src/ee/services/permission/permission-service.ts b/backend/src/ee/services/permission/permission-service.ts index 72a35a326..399a2950d 100644 --- a/backend/src/ee/services/permission/permission-service.ts +++ b/backend/src/ee/services/permission/permission-service.ts @@ -334,7 +334,7 @@ export const permissionServiceFactory = ({ const isCustomRole = !Object.values(ProjectMembershipRole).includes(role as ProjectMembershipRole); if (isCustomRole) { const projectRole = await projectRoleDAL.findOne({ slug: role, projectId }); - if (!projectRole) throw new BadRequestError({ message: "Role not found" }); + if (!projectRole) throw new BadRequestError({ message: `Role not found: ${role}` }); return { permission: buildProjectPermission([ { role: ProjectMembershipRole.Custom, permissions: projectRole.permissions } diff --git a/backend/src/services/group-project/group-project-service.ts b/backend/src/services/group-project/group-project-service.ts index 50cf6a1e1..c36ca75a9 100644 --- a/backend/src/services/group-project/group-project-service.ts +++ b/backend/src/services/group-project/group-project-service.ts @@ -113,10 +113,17 @@ export const groupProjectServiceFactory = ({ $in: { slug: customInputRoles.map(({ role }) => role) } }) : []; - if (customRoles.length !== customInputRoles.length) { - throw new NotFoundError({ message: "Custom role not found" }); - } + if (customRoles.length !== customInputRoles.length) { + const customRoleSlugs = customRoles.map((customRole) => customRole.slug); + const missingInputRoles = customInputRoles + .filter((inputRole) => !customRoleSlugs.includes(inputRole.role)) + .map((role) => role.role); + + throw new NotFoundError({ + message: `Custom role/s not found: ${missingInputRoles.join(", ")}` + }); + } const customRolesGroupBySlug = groupBy(customRoles, ({ slug }) => slug); const projectGroup = await groupProjectDAL.transaction(async (tx) => { @@ -260,7 +267,16 @@ export const groupProjectServiceFactory = ({ $in: { slug: customInputRoles.map(({ role }) => role) } }) : []; - if (customRoles.length !== customInputRoles.length) throw new BadRequestError({ message: "Custom role not found" }); + if (customRoles.length !== customInputRoles.length) { + const customRoleSlugs = customRoles.map((customRole) => customRole.slug); + const missingInputRoles = customInputRoles + .filter((inputRole) => !customRoleSlugs.includes(inputRole.role)) + .map((role) => role.role); + + throw new NotFoundError({ + message: `Custom role/s not found: ${missingInputRoles.join(", ")}` + }); + } const customRolesGroupBySlug = groupBy(customRoles, ({ slug }) => slug);