From ebb8bb9c677463f3d13800b6636a1b29a4847340 Mon Sep 17 00:00:00 2001 From: Alex van Andel Date: Wed, 6 Nov 2024 20:38:08 +0000 Subject: [PATCH] fix: saml does not add future members to eventtype (#17522) * fix: trigger createOrUpdateMemberships from dsync so SAML signup triggers side-effects * forEach does not wait for async/await done-ness --- .../signup/utils/createOrUpdateMemberships.ts | 2 +- .../lib/users/createUsersAndConnectToOrg.ts | 34 +++++++------------ 2 files changed, 13 insertions(+), 23 deletions(-) diff --git a/packages/features/auth/signup/utils/createOrUpdateMemberships.ts b/packages/features/auth/signup/utils/createOrUpdateMemberships.ts index 4bd09e1380..0d602ecca7 100644 --- a/packages/features/auth/signup/utils/createOrUpdateMemberships.ts +++ b/packages/features/auth/signup/utils/createOrUpdateMemberships.ts @@ -12,7 +12,7 @@ export const createOrUpdateMemberships = async ({ }: { user: Pick; team: Pick & { - organizationSettings: OrganizationSettings | null; + organizationSettings?: Pick | null; }; }) => { return await prisma.$transaction(async (tx) => { diff --git a/packages/features/ee/dsync/lib/users/createUsersAndConnectToOrg.ts b/packages/features/ee/dsync/lib/users/createUsersAndConnectToOrg.ts index 5f446d6920..9bd07ce4a9 100644 --- a/packages/features/ee/dsync/lib/users/createUsersAndConnectToOrg.ts +++ b/packages/features/ee/dsync/lib/users/createUsersAndConnectToOrg.ts @@ -1,8 +1,7 @@ -import { ProfileRepository } from "@calcom/lib/server/repository/profile"; +import { createOrUpdateMemberships } from "@calcom/features/auth/signup/utils/createOrUpdateMemberships"; import slugify from "@calcom/lib/slugify"; import prisma from "@calcom/prisma"; import type { IdentityProvider } from "@calcom/prisma/enums"; -import { MembershipRole } from "@calcom/prisma/enums"; import dSyncUserSelect from "./dSyncUserSelect"; @@ -50,26 +49,17 @@ const createUsersAndConnectToOrg = async ( }, select: dSyncUserSelect, }); - - await prisma.membership.createMany({ - data: users.map((user) => ({ - accepted: true, - userId: user.id, - teamId: organizationId, - role: MembershipRole.MEMBER, - })), - }); - - await prisma.profile.createMany({ - data: users.map((user) => ({ - uid: ProfileRepository.generateProfileUid(), - userId: user.id, - // The username is already set when creating the user - username: user.username!, - organizationId, - })), - }); - + // Assign created users to organization + for (const user of users) { + await createOrUpdateMemberships({ + user, + team: { + id: organizationId, + isOrganization: true, + parentId: null, // orgs don't have a parentId + }, + }); + } return users; };