import { jsonError } from "../../../common.js"; export async function onRequestPost(context: RequestContext) { const { pathname } = new URL(context.request.url); // Fix weirdo routing issue if (pathname.endsWith("/submit") || pathname.endsWith("/toggle")) return await context.next(); const { permissions } = context.data.current_user; if (!(permissions & (1 << 0)) && !(permissions & (1 << 11))) return jsonError("Forbidden", 403); if (pathname.endsWith("/bans")) return await context.next(); const { body } = context.data; const id = context.params.id as string; context.data.targetId = id; if (!pathname.endsWith("/ban")) { const appeal: Record | null = await context.env.D1.prepare( "SELECT * FROM appeals WHERE id = ?;", ) .bind(id) .first(); if (!appeal) return jsonError("No appeal with that ID exists", 404); appeal.user = JSON.parse(appeal.user); context.data.appeal = appeal; const pushNotificationData = await context.env.D1.prepare( "SELECT token FROM push_notifications WHERE event_id = ? AND event_type = 'appeal';", ) .bind(id) .first(); if (pushNotificationData) context.data.fcm_token = pushNotificationData.token; } if ( body.feedback && (typeof body.feedback !== "string" || body.feedback.length > 512) ) return jsonError("Invalid feedback", 400); return await context.next(); }