change case loading in server side mode, made case list functional

This commit is contained in:
2025-06-19 16:01:07 +02:00
parent a2ac88af50
commit c5dd8b9424
8 changed files with 110 additions and 168 deletions

View File

@@ -1,73 +1,49 @@
import { fail } from '@sveltejs/kit';
import { BUCKET, client, TOKENFILENAME } from '$lib/minio';
import { checkIfExactDirectoryExists } from './s3ClientService';
import { BUCKET, client, CONFIGFILENAME, TOKENFILENAME } from '$lib/minio';
import { checkIfExactDirectoryExists, getContentofTextObject } from './s3ClientService';
export const getVorgangByCaseId = async (caseId: string, token: string) => {
const isValidCase = await checkIfVorgangExists(caseId);
const isValidToken = await hasValidToken(caseId, token);
/**
* Get Vorgang and list of tatorte
* @param caseId
* @returns
*/
export const getVorgangByCaseId = async (caseId: string) => {
const prefix = `${caseId}/`;
// const prefix = params.vorgang ? `${params.vorgang}/` : '';
const stream = client.listObjectsV2(BUCKET, prefix, false, '');
// const stream = client.listObjectsV2(BUCKET, caseId, false, '');
// let files: any[] = [];
const list = [];
for await (const chunk of stream) {
const splittedNameParts = chunk.name.split('/');
const prefix = splittedNameParts[0];
const name = splittedNameParts[1];
if (name === CONFIGFILENAME || name === TOKENFILENAME) continue;
list.push({ ...chunk, name: name, prefix: prefix, show_button: true });
}
return list;
};
return new Promise((resolve, reject) => {
const stream = client.listObjectsV2(BUCKET, caseId, false, '');
const result = [];
export const getListOfVorgänge = async () => {
const stream = client.listObjectsV2(BUCKET, '', false, '');
const list = [];
for await (const chunk of stream) {
const objPath = `${chunk.prefix}${TOKENFILENAME}`;
stream.on('data', (item) => {
result.push(item);
});
const token = await getContentofTextObject(BUCKET, objPath);
stream.on('end', () => {
resolve(result);
});
stream.on('error', (err) => {
reject(err);
});
});
// const readableStream = new ReadableStream({
// start(controller) {
// stream.on('data', (data) => {
// if (caseId === '') {
// if (data.prefix)
// controller.enqueue(`${JSON.stringify({ ...data, name: data.prefix.slice(0, -1) })}\n`);
// return;
// }
// const name = data?.name?.slice(caseId.length);
// if (name === 'config.json') return;
// // zugangscode datei
// if (name === '__perm__') return;
// controller.enqueue(`${JSON.stringify({ ...data, name, caseId })}\n`);
// });
// stream.on('end', () => {
// controller.close();
// });
// },
// cancel() {
// stream.destroy();
// }
// });
// return files;
// return new Response(result, {
// headers: {
// 'content-type': 'text/event-stream'
// }
// });
const cleanedChunkPrefix = chunk.prefix.replace(/\/$/, '');
list.push({ name: cleanedChunkPrefix, token: token });
}
return list;
};
/**
* Checks if Vorgang exists and token is valid.
* Checks if Vorgang exists
* @param request
* @returns redirect to /list/caseId or error
* @returns fail or true
*/
const checkIfVorgangExists = async (caseId) => {
export const checkIfVorgangExists = async (caseId: string) => {
if (!caseId) {
return fail(400, {
success: false,
@@ -85,31 +61,23 @@ const checkIfVorgangExists = async (caseId) => {
}
return true;
// const isTokenValid = await hasValidToken(caseId, caseToken);
// if (!isTokenValid) {
// return fail(400, {
// success: false,
// caseId,
// error: { message: 'Der Token ist ungültig.' }
// });
// }
// redirect(303, `/list/${caseId}?token=${caseToken}`);
};
const hasValidToken = async (caseId: string, caseToken: string) => {
export const hasValidToken = async (caseId: string, caseToken: string) => {
const objPath = `${caseId}/${TOKENFILENAME}`;
try {
if (!caseToken) return false;
if (!caseToken) {
return fail(400, {
success: false,
caseId,
error: { message: 'Bitte Zugangscode eingeben!' }
});
}
const res = await client.getObject(BUCKET, objPath);
const token = await getContentofTextObject(BUCKET, objPath);
const token = await new Response(res).text();
if (!token) {
if (!token || token !== caseToken) {
return fail(400, {
success: false,
caseId,
@@ -117,7 +85,7 @@ const hasValidToken = async (caseId: string, caseToken: string) => {
});
}
return token === caseToken ? true : false;
return true;
} catch (error) {
if (error.name == 'S3Error') {
console.log(error);