f034_sqlite_database #19

Merged
jared merged 34 commits from f034_sqlite_database into development 2025-07-24 14:34:39 +02:00
5 changed files with 43 additions and 36 deletions
Showing only changes of commit 484acd3bcf - Show all commits

View File

@@ -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}`;

View File

@@ -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;

View File

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

View File

@@ -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 });
}
}

View File

@@ -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 });
}