From 484acd3bcf1b434cb3b3453491be7d80fe8acb4f Mon Sep 17 00:00:00 2001 From: Chi Cong Tran Date: Mon, 14 Jul 2025 13:20:15 +0200 Subject: [PATCH] =?UTF-8?q?refactoring:=20'Datei=20zu=20Vorgang=20hinzuf?= =?UTF-8?q?=C3=BCgen'=20an=20DB=20angepasst?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/server/vorgangService.ts | 9 +++++ src/routes/(angemeldet)/upload/+page.svelte | 33 ++++++++----------- .../(token-based)/list/[vorgang]/+page.svelte | 2 +- src/routes/api/list/[vorgang]/+server.ts | 13 ++++++++ src/routes/api/list/[vorgang]/code/+server.ts | 22 ++++--------- 5 files changed, 43 insertions(+), 36 deletions(-) diff --git a/src/lib/server/vorgangService.ts b/src/lib/server/vorgangService.ts index 7d7c5e7..95b378e 100644 --- a/src/lib/server/vorgangService.ts +++ b/src/lib/server/vorgangService.ts @@ -117,6 +117,15 @@ export const vorgangExists = function (caseId: string | null) { return found; }; +export const vorgangNameExists = function (caseName: string) { + let vorgaenge = getVorgaenge(); + const vorgaenge_names = vorgaenge.map((vorg) => vorg.name); + + const found = vorgaenge_names.indexOf(caseName) != -1; + + return found; +}; + export const hasValidToken = async (caseId: string, caseToken: string) => { const objPath = `${caseId}/${TOKENFILENAME}`; diff --git a/src/routes/(angemeldet)/upload/+page.svelte b/src/routes/(angemeldet)/upload/+page.svelte index 0d93a8c..cabf2ab 100644 --- a/src/routes/(angemeldet)/upload/+page.svelte +++ b/src/routes/(angemeldet)/upload/+page.svelte @@ -152,40 +152,33 @@ } // `/(angemeldet)/view` return true or false - async function case_exists(case_no) { + async function case_exists(case_name: string) { - if (case_no == '') { + if (case_name == '') { zugangscode = zugangscode_old; + return; } - // ping `/view` with caseNumber in POST body - let url = '/view'; + let url = `/api/list/${case_name}` - let data = new FormData(); - data.append('caseNumber', case_no); + const response = await fetch(url, { method: 'HEAD'}); + const status = response.status; - // fetch code in parallel - const code = await get_code(case_no); - if (code != -1) { - zugangscode = code; + if (status == 200) { case_existing = true; + const code = await get_code(case_name); + zugangscode = code; + return true - } - const response = await fetch(url, { method: 'POST', body: data }); - - const res_json = await response.json(); - const status = res_json.status; - - if (status != 303) { + } else { case_existing = false; zugangscode = zugangscode_old; + return false } - - return false; } - async function get_code(case_no) { + async function get_code(case_no: string) { if (case_no == '') return; diff --git a/src/routes/(token-based)/list/[vorgang]/+page.svelte b/src/routes/(token-based)/list/[vorgang]/+page.svelte index 4c335ce..c73ac56 100644 --- a/src/routes/(token-based)/list/[vorgang]/+page.svelte +++ b/src/routes/(token-based)/list/[vorgang]/+page.svelte @@ -144,7 +144,7 @@

Vorgang {vorg.name}

{#if data?.user?.admin} - Zugangspasswort: {vorg.pw} + Zugangscode: {vorg.pw} {/if}
diff --git a/src/routes/api/list/[vorgang]/+server.ts b/src/routes/api/list/[vorgang]/+server.ts index 5a76090..345b390 100644 --- a/src/routes/api/list/[vorgang]/+server.ts +++ b/src/routes/api/list/[vorgang]/+server.ts @@ -1,4 +1,5 @@ import { client } from '$lib/minio'; +import { vorgangNameExists } from '$lib/server/vorgangService'; export async function DELETE({ params }) { const vorgang = params.vorgang; @@ -22,3 +23,15 @@ export async function DELETE({ params }) { return new Response(null, { status: 204 }); } + +export async function HEAD({ params }) { + const vorgang_name = params.vorgang; + + const existing = vorgangNameExists(vorgang_name); + + if (existing) { + return new Response(null, { status: 200 }); + } else { + return new Response(null, { status: 404 }); + } +} diff --git a/src/routes/api/list/[vorgang]/code/+server.ts b/src/routes/api/list/[vorgang]/code/+server.ts index 3657b36..c2c8238 100644 --- a/src/routes/api/list/[vorgang]/code/+server.ts +++ b/src/routes/api/list/[vorgang]/code/+server.ts @@ -1,24 +1,16 @@ import { client } from '$lib/minio'; +import { db } from '$lib/server/dbService'; /** @type {import('./$types').RequestHandler} */ export async function GET({ params }) { - const prefix = params.vorgang ? `${params.vorgang}` : ''; + const vorgang_name = params.vorgang; - const code_name = '__perm__'; - const obj_path = `${prefix}/${code_name}`; + let get_code_stmt = `SELECT pw FROM cases WHERE name = ?;`; + const row = db.prepare(get_code_stmt).get(vorgang_name); + let pw = row.pw; - let result = null; - - try { - result = await client.getObject('tatort', obj_path); - } catch (error) { - if (error.name == 'S3Error') { - result = null; - } - } - - if (result != null) { - return new Response(result, { status: 200 }); + if (pw) { + return new Response(pw, { status: 200 }); } else { return new Response(null, { status: 404 }); }