diff --git a/apps/web/components/eventtype/CreateEventType.tsx b/apps/web/components/eventtype/CreateEventType.tsx index 30b137941a..0a6188f0b0 100644 --- a/apps/web/components/eventtype/CreateEventType.tsx +++ b/apps/web/components/eventtype/CreateEventType.tsx @@ -84,6 +84,11 @@ export default function CreateEventTypeButton(props: Props) { const message = `${err.statusCode}: ${err.message}`; showToast(message, "error"); } + + if (err.data?.code === "UNAUTHORIZED") { + const message = `${err.data.code}: You are not able to create this event`; + showToast(message, "error"); + } }, }); diff --git a/apps/web/pages/event-types/[type].tsx b/apps/web/pages/event-types/[type].tsx index 545e720fa1..50bb4cb84f 100644 --- a/apps/web/pages/event-types/[type].tsx +++ b/apps/web/pages/event-types/[type].tsx @@ -137,6 +137,11 @@ const EventTypePage = (props: inferSSRProps) => { const message = `${err.statusCode}: ${err.message}`; showToast(message, "error"); } + + if (err.data?.code === "UNAUTHORIZED") { + const message = `${err.data.code}: You are not able to update this event`; + showToast(message, "error"); + } }, }); diff --git a/apps/web/server/routers/viewer/eventTypes.tsx b/apps/web/server/routers/viewer/eventTypes.tsx index 82b257e79e..b6519406d2 100644 --- a/apps/web/server/routers/viewer/eventTypes.tsx +++ b/apps/web/server/routers/viewer/eventTypes.tsx @@ -108,16 +108,32 @@ export const eventTypesRouter = createProtectedRouter() input: createEventTypeInput, async resolve({ ctx, input }) { const { schedulingType, teamId, ...rest } = input; + + const userId = ctx.user.id; + const data: Prisma.EventTypeCreateInput = { ...rest, users: { connect: { - id: ctx.user.id, + id: userId, }, }, }; if (teamId && schedulingType) { + const hasMembership = await ctx.prisma.membership.findFirst({ + where: { + userId, + teamId: teamId, + accepted: true, + }, + }); + + if (!hasMembership) { + console.warn(`User ${userId} does not have permission to create this new event type`); + throw new TRPCError({ code: "UNAUTHORIZED" }); + } + data.team = { connect: { id: teamId,