diff --git a/functions/api/events-team/events/[id]/_middleware.ts b/functions/api/events-team/events/[id]/_middleware.ts new file mode 100644 index 0000000..ab054c2 --- /dev/null +++ b/functions/api/events-team/events/[id]/_middleware.ts @@ -0,0 +1,26 @@ +import { jsonError } from "../../../../common.js"; + +export async function onRequest(context: RequestContext) { + const pathSegments = new URL(context.request.url).pathname.split("/"); + + // Skip checks for the by-id endpoint + if (pathSegments.length > 5) return await context.next(); + + const eventInfo = await context.env.D1.prepare( + "SELECT * FROM events WHERE id = ?;", + ) + .bind(context.params.id) + .first(); + + if (!eventInfo) return jsonError("This event does not exist.", 404); + + if ( + eventInfo.created_by !== context.data.current_user.id && + ![1 << 4, 1 << 12].find((p) => context.data.current_user.permissions & p) + ) + return jsonError("You cannot manage this event.", 403); + + context.data.event = eventInfo; + + return await context.next(); +}