fix: make sure only admins and owners are authorized for team (#25333)
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user