From a1318d54b15dc3ad80d51959d4335c1441b22e5d Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Thu, 27 Mar 2025 13:26:30 +0800 Subject: [PATCH] misc: added no access exemption --- .../src/ee/services/group/group-service.ts | 37 ++++++++++--------- backend/src/services/org/org-service.ts | 36 +++++++++--------- 2 files changed, 38 insertions(+), 35 deletions(-) diff --git a/backend/src/ee/services/group/group-service.ts b/backend/src/ee/services/group/group-service.ts index be8abf0cd..b9206771e 100644 --- a/backend/src/ee/services/group/group-service.ts +++ b/backend/src/ee/services/group/group-service.ts @@ -87,25 +87,26 @@ export const groupServiceFactory = ({ actorOrgId ); const isCustomRole = Boolean(customRole); + if (role !== OrgMembershipRole.NoAccess) { + const permissionBoundary = validatePrivilegeChangeOperation( + membership.shouldUseNewPrivilegeSystem, + OrgPermissionGroupActions.GrantPrivileges, + OrgPermissionSubjects.Groups, + permission, + rolePermission + ); - const permissionBoundary = validatePrivilegeChangeOperation( - membership.shouldUseNewPrivilegeSystem, - OrgPermissionGroupActions.GrantPrivileges, - OrgPermissionSubjects.Groups, - permission, - rolePermission - ); - - if (!permissionBoundary.isValid) - throw new PermissionBoundaryError({ - message: constructPermissionErrorMessage( - "Failed to create group", - membership.shouldUseNewPrivilegeSystem, - OrgPermissionGroupActions.GrantPrivileges, - OrgPermissionSubjects.Groups - ), - details: { missingPermissions: permissionBoundary.missingPermissions } - }); + if (!permissionBoundary.isValid) + throw new PermissionBoundaryError({ + message: constructPermissionErrorMessage( + "Failed to create group", + membership.shouldUseNewPrivilegeSystem, + OrgPermissionGroupActions.GrantPrivileges, + OrgPermissionSubjects.Groups + ), + details: { missingPermissions: permissionBoundary.missingPermissions } + }); + } const group = await groupDAL.transaction(async (tx) => { const existingGroup = await groupDAL.findOne({ orgId: actorOrgId, name }, tx); diff --git a/backend/src/services/org/org-service.ts b/backend/src/services/org/org-service.ts index ba7d9dac9..1868871f3 100644 --- a/backend/src/services/org/org-service.ts +++ b/backend/src/services/org/org-service.ts @@ -945,24 +945,26 @@ export const orgServiceFactory = ({ projectId ); - const permissionBoundary = validatePrivilegeChangeOperation( - membership.shouldUseNewPrivilegeSystem, - ProjectPermissionMemberActions.GrantPrivileges, - ProjectPermissionSub.Member, - projectPermission, - rolePermission - ); + if (invitedRole !== ProjectMembershipRole.NoAccess) { + const permissionBoundary = validatePrivilegeChangeOperation( + membership.shouldUseNewPrivilegeSystem, + ProjectPermissionMemberActions.GrantPrivileges, + ProjectPermissionSub.Member, + projectPermission, + rolePermission + ); - if (!permissionBoundary.isValid) - throw new PermissionBoundaryError({ - message: constructPermissionErrorMessage( - "Failed to invite user to the project", - membership.shouldUseNewPrivilegeSystem, - ProjectPermissionMemberActions.GrantPrivileges, - ProjectPermissionSub.Member - ), - details: { missingPermissions: permissionBoundary.missingPermissions } - }); + if (!permissionBoundary.isValid) + throw new PermissionBoundaryError({ + message: constructPermissionErrorMessage( + "Failed to invite user to the project", + membership.shouldUseNewPrivilegeSystem, + ProjectPermissionMemberActions.GrantPrivileges, + ProjectPermissionSub.Member + ), + details: { missingPermissions: permissionBoundary.missingPermissions } + }); + } } const customProjectRoles = invitedProjectRoles.filter(