Skip to content

Commit 59e0a20

Browse files
author
neha
committed
Address reviewer feedback: use existing membership pattern
- Remove custom checkIfUserIsTeamAdmin function - Use existing userId_teamId pattern with prisma.membership.findUnique - Revert PrismaPlugin and variable name changes - Maintain same functionality with cleaner implementation
1 parent 9246448 commit 59e0a20

File tree

3 files changed

+24
-23
lines changed

3 files changed

+24
-23
lines changed

apps/web/modules/bookings/views/bookings-single-view.getServerSideProps.tsx

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import { shouldHideBrandingForEvent } from "@calcom/lib/hideBranding";
1111
import { parseRecurringEvent } from "@calcom/lib/isRecurringEvent";
1212
import { markdownToSafeHTML } from "@calcom/lib/markdownToSafeHTML";
1313
import { maybeGetBookingUidFromSeat } from "@calcom/lib/server/maybeGetBookingUidFromSeat";
14-
import { isTeamAdmin, isTeamMember } from "@calcom/lib/server/queries/teams";
1514
import { BookingRepository } from "@calcom/lib/server/repository/booking";
1615
import prisma from "@calcom/prisma";
1716
import { customInputSchema } from "@calcom/prisma/zod-utils";
@@ -175,27 +174,29 @@ export async function getServerSideProps(context: GetServerSidePropsContext) {
175174
);
176175
};
177176

178-
const checkIfUserIsTeamMember = async (userId?: number | null) => {
179-
if (!userId) return false;
180-
181-
const teamId = eventType.team?.id;
182-
if (teamId) {
183-
const teamMemberResult = await isTeamMember(userId, teamId);
184-
if (teamMemberResult) return true;
185-
}
186-
187-
const parentTeamId = eventType.parent?.teamId;
188-
if (parentTeamId) {
189-
const parentTeamMemberResult = await isTeamMember(userId, parentTeamId);
190-
if (parentTeamMemberResult) return true;
191-
}
177+
const isLoggedInUserHost = checkIfUserIsHost(userId);
192178

193-
return false;
194-
};
179+
const isLoggedInUserTeamAdmin = !!(
180+
userId &&
181+
((eventType.team?.id &&
182+
(await prisma.membership.findUnique({
183+
where: {
184+
userId_teamId: { userId, teamId: eventType.team.id },
185+
accepted: true,
186+
OR: [{ role: "ADMIN" }, { role: "OWNER" }],
187+
},
188+
}))) ||
189+
(eventType.parent?.teamId &&
190+
(await prisma.membership.findUnique({
191+
where: {
192+
userId_teamId: { userId, teamId: eventType.parent.teamId },
193+
accepted: true,
194+
OR: [{ role: "ADMIN" }, { role: "OWNER" }],
195+
},
196+
}))))
197+
);
195198

196-
const isLoggedInUserHost = checkIfUserIsHost(userId);
197-
const isLoggedInUserTeamMember = await checkIfUserIsTeamMember(userId);
198-
const canViewHiddenData = isLoggedInUserHost || isLoggedInUserTeamMember;
199+
const canViewHiddenData = isLoggedInUserHost || isLoggedInUserTeamAdmin;
199200

200201
if (bookingInfo !== null && eventType.seatsPerTimeSlot) {
201202
await handleSeatsEventTypeOnBooking(eventType, bookingInfo, seatReferenceUid, isLoggedInUserHost);

apps/web/modules/bookings/views/bookings-single-view.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ export default function Success(props: PageProps) {
385385
const isRescheduled = bookingInfo?.rescheduled;
386386

387387
const canCancelOrReschedule = !eventType?.disableCancelling || !eventType?.disableRescheduling;
388-
const _canCancelAndReschedule = !eventType?.disableCancelling && !eventType?.disableRescheduling;
388+
const canCancelAndReschedule = !eventType?.disableCancelling && !eventType?.disableRescheduling;
389389

390390
const canCancel = !eventType?.disableCancelling;
391391
const canReschedule = !eventType?.disableRescheduling;

apps/web/next.config.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ require("dotenv").config({ path: "../../.env" });
22
const englishTranslation = require("./public/static/locales/en/common.json");
33
const { withAxiom } = require("next-axiom");
44
const { version } = require("./package.json");
5-
// const { PrismaPlugin } = require("@prisma/nextjs-monorepo-workaround-plugin");
5+
const { PrismaPlugin } = require("@prisma/nextjs-monorepo-workaround-plugin");
66
const {
77
i18n: { locales },
88
} = require("./next-i18next.config");
@@ -255,7 +255,7 @@ const nextConfig = (phase) => {
255255
})
256256
);
257257

258-
// config.plugins = [...config.plugins, new PrismaPlugin()];
258+
config.plugins = [...config.plugins, new PrismaPlugin()];
259259

260260
config.externals.push("formidable");
261261
}

0 commit comments

Comments
 (0)