diff --git a/functions/api/reports/complete.ts b/functions/api/reports/complete.ts index 9a156db..dd43f97 100644 --- a/functions/api/reports/complete.ts +++ b/functions/api/reports/complete.ts @@ -9,9 +9,14 @@ export async function onRequestPost(context: RequestContext) { status: 400, }); - const userId = await context.env.DATA.get(`reportprocessing_${id}`); - - if (!userId || userId !== context.data.current_user.id) + const user = await context.env.DATA.get(`reportprocessing_${id}`); + + if ( + !user || + (context.data.current_user + ? user !== context.data.current_user.id + : user !== context.request.headers.get("CF-Connecting-IP")) + ) return new Response('{"error":"No report with that ID is processing"}', { headers: { "content-type": "application/json", diff --git a/functions/api/reports/submit.ts b/functions/api/reports/submit.ts index 4fdc2c6..cfd099d 100644 --- a/functions/api/reports/submit.ts +++ b/functions/api/reports/submit.ts @@ -148,7 +148,7 @@ export async function onRequestPost(context: RequestContext) { await context.env.DATA.put( `reportprocessing_${reportId}`, - context.data.current_user.id, + currentUser?.id || context.request.headers.get("CF-Connecting-IP"), { expirationTtl: 3600 } ); @@ -164,17 +164,27 @@ export async function onRequestPost(context: RequestContext) { ["mkv", "mov", "wmv"].includes(fileExt.toLowerCase()) ? "mp4" : fileExt }`, id: reportId, - user: { - discriminator: currentUser.discriminator, - email: currentUser.email, - id: currentUser.id, - username: currentUser.username, - }, + user: currentUser + ? { + discriminator: currentUser.discriminator, + email: currentUser.email, + id: currentUser.id, + username: currentUser.username, + } + : null, target_ids: metaIDs, target_usernames: metaNames, }) ); + try { + await context.env.D1.prepare( + "INSERT INTO reports (created_at, id, open, user) VALUES (?, ?, ?, ?);" + ) + .bind(Date.now(), reportId, 1, currentUser?.id || null) + .run(); + } catch {} + return new Response(JSON.stringify({ id: reportId, upload_url: uploadUrl }), { headers: { "content-type": "application/json",