diff --git a/backend/src/services/membership-group/membership-group-service.ts b/backend/src/services/membership-group/membership-group-service.ts index 509bd9ff3..767daab31 100644 --- a/backend/src/services/membership-group/membership-group-service.ts +++ b/backend/src/services/membership-group/membership-group-service.ts @@ -93,15 +93,6 @@ export const membershipGroupServiceFactory = ({ } const scopeDatabaseFields = factory.getScopeDatabaseFields(dto.scopeData); - const existingMembership = await membershipGroupDAL.findOne({ - scope: scopeData.scope, - ...scopeDatabaseFields, - actorGroupId: dto.data.groupId - }); - if (existingMembership) - throw new BadRequestError({ - message: "Group is already a member" - }); await factory.onCreateMembershipGroupGuard(dto); @@ -122,6 +113,19 @@ export const membershipGroupServiceFactory = ({ const customRolesGroupBySlug = groupBy(customRoles, ({ slug }) => slug); const membership = await membershipGroupDAL.transaction(async (tx) => { + const existingMembership = await membershipGroupDAL.findOne( + { + scope: scopeData.scope, + ...scopeDatabaseFields, + actorGroupId: dto.data.groupId + }, + tx + ); + if (existingMembership) + throw new BadRequestError({ + message: "Group is already a member" + }); + const doc = await membershipGroupDAL.create( { scope: scopeData.scope, diff --git a/backend/src/services/membership-identity/membership-identity-service.ts b/backend/src/services/membership-identity/membership-identity-service.ts index 841c73bd7..b1dd6e238 100644 --- a/backend/src/services/membership-identity/membership-identity-service.ts +++ b/backend/src/services/membership-identity/membership-identity-service.ts @@ -102,19 +102,22 @@ export const membershipIdentityServiceFactory = ({ throw new NotFoundError({ message: "One or more custom roles not found" }); } - const existingMembership = await membershipIdentityDAL.findOne({ - scope: scopeData.scope, - ...scopeDatabaseFields, - actorIdentityId: dto.data.identityId - }); - if (existingMembership) - throw new BadRequestError({ - message: "Identity is already a member" - }); - const customRolesGroupBySlug = groupBy(customRoles, ({ slug }) => slug); const membership = await membershipIdentityDAL.transaction(async (tx) => { + const existingMembership = await membershipIdentityDAL.findOne( + { + scope: scopeData.scope, + ...scopeDatabaseFields, + actorIdentityId: dto.data.identityId + }, + tx + ); + if (existingMembership) + throw new BadRequestError({ + message: "Identity is already a member" + }); + const doc = await membershipIdentityDAL.create( { scope: scopeData.scope,