mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-10 11:29:02 +00:00
Small improvement on requestProjectAccess
This commit is contained in:
@@ -1857,19 +1857,22 @@ export const projectServiceFactory = ({
|
||||
let filteredProjectMembers = projectMembers
|
||||
.filter((member) => member.roles.some((role) => role.role === ProjectMembershipRole.Admin))
|
||||
.map((el) => el.user.email!);
|
||||
|
||||
if (filteredProjectMembers.length === 0) {
|
||||
const customRolesWithMemberCreate = await projectRoleDAL.find({ projectId });
|
||||
const customRoleSlugsCanalCreate = customRolesWithMemberCreate
|
||||
.filter((role) => {
|
||||
try {
|
||||
const permissions = JSON.parse(role.permissions as string) as Array<{
|
||||
action: string;
|
||||
subject: string;
|
||||
}>;
|
||||
return permissions.some(
|
||||
(perm) =>
|
||||
perm.action === ProjectPermissionMemberActions.Create && perm.subject === ProjectPermissionSub.Member
|
||||
);
|
||||
const permissions = (
|
||||
typeof role.permissions === "string" ? JSON.parse(role.permissions) : role.permissions
|
||||
) as Array<[string, string, object?, number?]>;
|
||||
|
||||
return permissions.some(([permissionActions, permissionSubject]) => {
|
||||
if (permissionSubject === ProjectPermissionSub.Member) {
|
||||
const actionsList = permissionActions.split(",").map((action) => action.trim());
|
||||
return actionsList.includes(ProjectPermissionMemberActions.Create);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
@@ -1888,6 +1891,7 @@ export const projectServiceFactory = ({
|
||||
filteredProjectMembers = usersWithCustomCreateMemberRole;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (filteredProjectMembers.length === 0) {
|
||||
throw new BadRequestError({
|
||||
|
||||
Reference in New Issue
Block a user