refactoring: 'Datei zu Vorgang hinzufügen' an DB angepasst

This commit is contained in:
2025-07-14 13:20:15 +02:00
parent cd5389666e
commit 484acd3bcf
5 changed files with 43 additions and 36 deletions

View File

@@ -117,6 +117,15 @@ export const vorgangExists = function (caseId: string | null) {
return found; 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) => { export const hasValidToken = async (caseId: string, caseToken: string) => {
const objPath = `${caseId}/${TOKENFILENAME}`; const objPath = `${caseId}/${TOKENFILENAME}`;

View File

@@ -152,40 +152,33 @@
} }
// `/(angemeldet)/view` return true or false // `/(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; zugangscode = zugangscode_old;
return;
} }
// ping `/view` with caseNumber in POST body let url = `/api/list/${case_name}`
let url = '/view';
let data = new FormData(); const response = await fetch(url, { method: 'HEAD'});
data.append('caseNumber', case_no); const status = response.status;
// fetch code in parallel if (status == 200) {
const code = await get_code(case_no);
if (code != -1) {
zugangscode = code;
case_existing = true; case_existing = true;
const code = await get_code(case_name);
zugangscode = code;
return true return true
}
const response = await fetch(url, { method: 'POST', body: data }); } else {
const res_json = await response.json();
const status = res_json.status;
if (status != 303) {
case_existing = false; case_existing = false;
zugangscode = zugangscode_old; zugangscode = zugangscode_old;
return false
} }
return false;
} }
async function get_code(case_no) { async function get_code(case_no: string) {
if (case_no == '') return; if (case_no == '') return;

View File

@@ -144,7 +144,7 @@
<div class="flex flex-col items-center justify-center w-full"> <div class="flex flex-col items-center justify-center w-full">
<h1 class="text-xl">Vorgang {vorg.name}</h1> <h1 class="text-xl">Vorgang {vorg.name}</h1>
{#if data?.user?.admin} {#if data?.user?.admin}
Zugangspasswort: {vorg.pw} Zugangscode: {vorg.pw}
<Button on:click={() => setClipboard($page.url.toString().split('?')[0])}>Copy Link</Button> <Button on:click={() => setClipboard($page.url.toString().split('?')[0])}>Copy Link</Button>
{/if} {/if}
</div> </div>

View File

@@ -1,4 +1,5 @@
import { client } from '$lib/minio'; import { client } from '$lib/minio';
import { vorgangNameExists } from '$lib/server/vorgangService';
export async function DELETE({ params }) { export async function DELETE({ params }) {
const vorgang = params.vorgang; const vorgang = params.vorgang;
@@ -22,3 +23,15 @@ export async function DELETE({ params }) {
return new Response(null, { status: 204 }); 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 });
}
}

View File

@@ -1,24 +1,16 @@
import { client } from '$lib/minio'; import { client } from '$lib/minio';
import { db } from '$lib/server/dbService';
/** @type {import('./$types').RequestHandler} */ /** @type {import('./$types').RequestHandler} */
export async function GET({ params }) { export async function GET({ params }) {
const prefix = params.vorgang ? `${params.vorgang}` : ''; const vorgang_name = params.vorgang;
const code_name = '__perm__'; let get_code_stmt = `SELECT pw FROM cases WHERE name = ?;`;
const obj_path = `${prefix}/${code_name}`; const row = db.prepare(get_code_stmt).get(vorgang_name);
let pw = row.pw;
let result = null; if (pw) {
return new Response(pw, { status: 200 });
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 });
} else { } else {
return new Response(null, { status: 404 }); return new Response(null, { status: 404 });
} }