From a489b8cdd3a0e96081356a8051e80872c84b9570 Mon Sep 17 00:00:00 2001 From: bytedream Date: Wed, 27 Nov 2024 21:13:49 +0100 Subject: [PATCH] add api endpoint to get all reported related to a user (#27) --- src/routes/api/report/+server.ts | 33 ++++++++++++++++++++++++++++++ src/routes/reports/+page.server.ts | 15 -------------- src/routes/reports/+page.svelte | 0 3 files changed, 33 insertions(+), 15 deletions(-) delete mode 100644 src/routes/reports/+page.server.ts delete mode 100644 src/routes/reports/+page.svelte diff --git a/src/routes/api/report/+server.ts b/src/routes/api/report/+server.ts index 60ec654..f233acf 100644 --- a/src/routes/api/report/+server.ts +++ b/src/routes/api/report/+server.ts @@ -5,6 +5,39 @@ import { env as public_env } from '$env/dynamic/public'; import { env } from '$env/dynamic/private'; import { ReportAddSchema } from './schema'; +export const GET = async ({ url }) => { + if (env.REPORT_SECRET && url.searchParams.get('secret') !== env.REPORT_SECRET) + return new Response(null, { status: 401 }); + + const user = await User.findOne({ where: { uuid: url.searchParams.get('user') ?? '' } }); + if (user === null) return new Response(null, { status: 400 }); + + const reports = { + from_self: await Report.findAll({ where: { reporter_id: user.id } }).then((reports) => + reports.map((report) => { + return { + subject: report.subject, + draft: report.draft, + status: report.status, + url: `${url.protocol}//${url.host}${public_env.PUBLIC_BASE_PATH || ''}/report/${report.url_hash}` + }; + }) + ), + to_self: await Report.findAll({ where: { reported_id: user.id } }).then((reports) => + reports.map((report) => { + return { + subject: report.subject, + draft: report.draft, + status: report.status, + url: `${url.protocol}//${url.host}${public_env.PUBLIC_BASE_PATH || ''}/report/${report.url_hash}` + }; + }) + ) + }; + + return new Response(JSON.stringify(reports), { status: 200 }); +}; + export const POST = (async ({ request, url }) => { if (env.REPORT_SECRET && url.searchParams.get('secret') !== env.REPORT_SECRET) return new Response(null, { status: 401 }); diff --git a/src/routes/reports/+page.server.ts b/src/routes/reports/+page.server.ts deleted file mode 100644 index 0d5a440..0000000 --- a/src/routes/reports/+page.server.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { PageServerLoad } from './$types'; -import { Report, Settings } from '$lib/server/database'; - -export const load: PageServerLoad = async () => { - return { - created: Report.findAll({ where: {} }), - - enabled: (await Settings.findOne({ where: { key: 'register.enabled' } }))?.value ?? true, - disabled_title: - (await Settings.findOne({ where: { key: 'register.disabled_title' } }))?.value ?? - 'Anmeldung geschlossen', - disabled_details: - (await Settings.findOne({ where: { key: 'register.disabled_details' } }))?.value ?? '' - }; -}; diff --git a/src/routes/reports/+page.svelte b/src/routes/reports/+page.svelte deleted file mode 100644 index e69de29..0000000