diff --git a/packages/features/ee/teams/lib/queries.ts b/packages/features/ee/teams/lib/queries.ts index a90f4a1d50..dbfcf562d7 100644 --- a/packages/features/ee/teams/lib/queries.ts +++ b/packages/features/ee/teams/lib/queries.ts @@ -396,16 +396,6 @@ export async function isTeamOwner(userId: number, teamId: number) { })); } -export async function isTeamMember(userId: number, teamId: number) { - return !!(await prisma.membership.findFirst({ - where: { - userId, - teamId, - accepted: true, - }, - })); -} - export function generateNewChildEventTypeDataForDB({ eventType, userId, diff --git a/packages/lib/server/repository/membership.ts b/packages/lib/server/repository/membership.ts index aad4979c60..6b22a78282 100644 --- a/packages/lib/server/repository/membership.ts +++ b/packages/lib/server/repository/membership.ts @@ -303,13 +303,22 @@ export class MembershipRepository { }); } - static async findUniqueByUserIdAndTeamId({ userId, teamId }: { userId: number; teamId: number }) { + static async findUniqueByUserIdAndTeamId({ + userId, + teamId, + accepted, + }: { + userId: number; + teamId: number; + accepted?: boolean; + }) { return await prisma.membership.findUnique({ where: { userId_teamId: { userId, teamId, }, + accepted, }, }); } diff --git a/packages/trpc/server/routers/viewer/teams/getInternalNotesPresets.handler.ts b/packages/trpc/server/routers/viewer/teams/getInternalNotesPresets.handler.ts index 389697de15..f0ab930a98 100644 --- a/packages/trpc/server/routers/viewer/teams/getInternalNotesPresets.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/getInternalNotesPresets.handler.ts @@ -1,4 +1,4 @@ -import { isTeamMember } from "@calcom/features/ee/teams/lib/queries"; +import { MembershipRepository } from "@calcom/lib/server/repository/membership"; import { prisma } from "@calcom/prisma"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; @@ -14,8 +14,14 @@ type UpdateMembershipOptions = { }; export const getInternalNotesPresetsHandler = async ({ ctx, input }: UpdateMembershipOptions) => { - if (!(await isTeamMember(ctx.user?.id, input.teamId))) { - throw new TRPCError({ code: "UNAUTHORIZED" }); + const membership = await MembershipRepository.findUniqueByUserIdAndTeamId({ + userId: ctx.user.id, + teamId: input.teamId, + accepted: true, + }); + + if (!membership) { + throw new TRPCError({ code: "UNAUTHORIZED", message: "User is not a member of this team" }); } return await prisma.internalNotePreset.findMany({ diff --git a/packages/trpc/server/routers/viewer/teams/getMemberAvailability.handler.ts b/packages/trpc/server/routers/viewer/teams/getMemberAvailability.handler.ts index 4c42c41b89..c4ad472929 100644 --- a/packages/trpc/server/routers/viewer/teams/getMemberAvailability.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/getMemberAvailability.handler.ts @@ -1,6 +1,5 @@ import { enrichUserWithDelegationCredentialsIncludeServiceAccountKey } from "@calcom/lib/delegationCredential/server"; import { getUserAvailabilityService } from "@calcom/lib/di/containers/GetUserAvailability"; -import { isTeamMember } from "@calcom/features/ee/teams/lib/queries"; import { MembershipRepository } from "@calcom/lib/server/repository/membership"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; @@ -17,8 +16,16 @@ type GetMemberAvailabilityOptions = { export const getMemberAvailabilityHandler = async ({ ctx, input }: GetMemberAvailabilityOptions) => { const userAvailabilityService = getUserAvailabilityService(); - const team = await isTeamMember(ctx.user?.id, input.teamId); - if (!team) throw new TRPCError({ code: "UNAUTHORIZED" }); + + const membership = await MembershipRepository.findUniqueByUserIdAndTeamId({ + userId: ctx.user.id, + teamId: input.teamId, + accepted: true, + }); + + if (!membership) { + throw new TRPCError({ code: "UNAUTHORIZED", message: "User is not a member of this team" }); + } // verify member is in team const members = await MembershipRepository.findByTeamIdForAvailability({ teamId: input.teamId });