From dc86dceb2f912dae37cc2b30ce573f4c3b195afb Mon Sep 17 00:00:00 2001 From: bytedream Date: Fri, 29 Nov 2024 00:00:50 +0100 Subject: [PATCH] redirect to root on unknown report hash --- src/routes/report/+page.svelte | 5 ---- src/routes/report/+page.ts | 7 ++++++ src/routes/report/+server.ts | 43 ---------------------------------- 3 files changed, 7 insertions(+), 48 deletions(-) delete mode 100644 src/routes/report/+page.svelte create mode 100644 src/routes/report/+page.ts delete mode 100644 src/routes/report/+server.ts diff --git a/src/routes/report/+page.svelte b/src/routes/report/+page.svelte deleted file mode 100644 index 0e49936..0000000 --- a/src/routes/report/+page.svelte +++ /dev/null @@ -1,5 +0,0 @@ -
-

- Reports können nur ingame mittels des /report Befehls erstellt werden -

-
diff --git a/src/routes/report/+page.ts b/src/routes/report/+page.ts new file mode 100644 index 0000000..826ac63 --- /dev/null +++ b/src/routes/report/+page.ts @@ -0,0 +1,7 @@ +import type { PageLoad } from './$types'; +import { redirect } from '@sveltejs/kit'; +import { env } from '$env/dynamic/public'; + +export const load: PageLoad = async () => { + throw redirect(302, `${env.PUBLIC_BASE_PATH}/`); +}; diff --git a/src/routes/report/+server.ts b/src/routes/report/+server.ts deleted file mode 100644 index 4b1a104..0000000 --- a/src/routes/report/+server.ts +++ /dev/null @@ -1,43 +0,0 @@ -import type { RequestHandler } from '@sveltejs/kit'; -import { Report, User } from '$lib/server/database'; -import * as crypto from 'crypto'; -import { env as public_env } from '$env/dynamic/public'; -import { env } from '$env/dynamic/private'; - -export const POST = (async ({ request, url }) => { - if (env.REPORT_SECRET && url.searchParams.get('secret') !== env.REPORT_SECRET) - return new Response(null, { status: 401 }); - - const data: { reporter: string; reported: string | null; reason: string } = await request.json(); - - if (data.reporter == null || data.reason == null) return new Response(null, { status: 400 }); - - const reporter = await User.findOne({ where: { uuid: data.reporter } }); - const reported = data.reported - ? await User.findOne({ where: { uuid: data.reported } }) - : undefined; - - if (reporter == null || reported === null) return new Response(null, { status: 400 }); - - const report = await Report.create({ - subject: data.reason, - body: null, - draft: true, - status: 'none', - url_hash: crypto.randomBytes(18).toString('hex'), - completed: false, - reporter_id: reporter.id, - reported_id: reported?.id || null - }); - - return new Response( - JSON.stringify({ - url: `${url.protocol}//${url.host}${public_env.PUBLIC_BASE_PATH || ''}/report/${ - report.url_hash - }` - }), - { - status: 201 - } - ); -}) satisfies RequestHandler;