Small improvement on requestProjectAccess

This commit is contained in:
Carlos Monastyrski
2025-09-05 18:02:50 -03:00
parent ddbc4aeded
commit 5822210511
@@ -1857,19 +1857,22 @@ export const projectServiceFactory = ({
let filteredProjectMembers = projectMembers let filteredProjectMembers = projectMembers
.filter((member) => member.roles.some((role) => role.role === ProjectMembershipRole.Admin)) .filter((member) => member.roles.some((role) => role.role === ProjectMembershipRole.Admin))
.map((el) => el.user.email!); .map((el) => el.user.email!);
if (filteredProjectMembers.length === 0) {
const customRolesWithMemberCreate = await projectRoleDAL.find({ projectId }); const customRolesWithMemberCreate = await projectRoleDAL.find({ projectId });
const customRoleSlugsCanalCreate = customRolesWithMemberCreate const customRoleSlugsCanalCreate = customRolesWithMemberCreate
.filter((role) => { .filter((role) => {
try { try {
const permissions = JSON.parse(role.permissions as string) as Array<{ const permissions = (
action: string; typeof role.permissions === "string" ? JSON.parse(role.permissions) : role.permissions
subject: string; ) as Array<[string, string, object?, number?]>;
}>;
return permissions.some( return permissions.some(([permissionActions, permissionSubject]) => {
(perm) => if (permissionSubject === ProjectPermissionSub.Member) {
perm.action === ProjectPermissionMemberActions.Create && perm.subject === ProjectPermissionSub.Member const actionsList = permissionActions.split(",").map((action) => action.trim());
); return actionsList.includes(ProjectPermissionMemberActions.Create);
}
return false;
});
} catch { } catch {
return false; return false;
} }
@@ -1888,6 +1891,7 @@ export const projectServiceFactory = ({
filteredProjectMembers = usersWithCustomCreateMemberRole; filteredProjectMembers = usersWithCustomCreateMemberRole;
} }
} }
}
if (filteredProjectMembers.length === 0) { if (filteredProjectMembers.length === 0) {
throw new BadRequestError({ throw new BadRequestError({