fix: make sure only admins and owners are authorized for team (#25333)

This commit is contained in:
Rajiv Sahal
2025-11-21 18:44:51 +00:00
committed by GitHub
parent a7d87fc5be
commit 06348982a3
@@ -61,7 +61,10 @@ export const eventOwnerProcedure = authedProcedure
const isAuthorized = (function () {
if (event.team) {
return event.team.members.map((member) => member.userId).includes(ctx.user.id);
const teamMember = event.team.members.find((member) => member.userId === ctx.user.id);
const isOwnerOrAdmin = teamMember?.role === "ADMIN" || teamMember?.role === "OWNER";
return isOwnerOrAdmin;
}
return event.userId === ctx.user.id || event.users.find((user) => user.id === ctx.user.id);
})();
@@ -297,29 +300,14 @@ export function ensureEmailOrPhoneNumberIsPresent(fields: TUpdateInputSchema["bo
}
}
type Host = {
userId: number;
isFixed?: boolean | undefined;
priority?: number | null | undefined;
weight?: number | null | undefined;
scheduleId?: number | null | undefined;
groupId: string | null;
};
type User = {
id: number;
email: string;
};
export const mapEventType = async (eventType: EventType) => ({
...eventType,
safeDescription: eventType?.description ? markdownToSafeHTML(eventType.description) : undefined,
users: await Promise.all(
(eventType?.hosts?.length ? eventType?.hosts.map((host) => host.user) : eventType.users).map(
async (u) =>
await new UserRepository(prisma).enrichUserWithItsProfile({
user: u,
})
(eventType?.hosts?.length ? eventType.hosts.map((host) => host.user) : eventType.users).map(async (u) =>
new UserRepository(prisma).enrichUserWithItsProfile({
user: u,
})
)
),
metadata: eventType.metadata ? EventTypeMetaDataSchema.parse(eventType.metadata) : null,