diff --git a/src/lib/server/vorgangService.ts b/src/lib/server/vorgangService.ts index c4439bd..a4dcad4 100644 --- a/src/lib/server/vorgangService.ts +++ b/src/lib/server/vorgangService.ts @@ -1,17 +1,73 @@ -import { fail, redirect } from '@sveltejs/kit'; +import { fail } from '@sveltejs/kit'; import { BUCKET, client, TOKENFILENAME } from '$lib/minio'; import { checkIfExactDirectoryExists } from './s3ClientService'; +export const getVorgangByCaseId = async (caseId: string, token: string) => { + const isValidCase = await checkIfVorgangExists(caseId); + const isValidToken = await hasValidToken(caseId, token); + + // const prefix = params.vorgang ? `${params.vorgang}/` : ''; + + // const stream = client.listObjectsV2(BUCKET, caseId, false, ''); + // let files: any[] = []; + + return new Promise((resolve, reject) => { + const stream = client.listObjectsV2(BUCKET, caseId, false, ''); + const result = []; + + stream.on('data', (item) => { + result.push(item); + }); + + 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' + // } + // }); +}; + /** * Checks if Vorgang exists and token is valid. * @param request * @returns redirect to /list/caseId or error */ -export const redirectIfVorgangExists = async (request: Request) => { - const data = await request.formData(); - const caseId = data.get('case-id'); - const caseToken = data.get('case-token'); - +const checkIfVorgangExists = async (caseId) => { if (!caseId) { return fail(400, { success: false, @@ -28,55 +84,22 @@ export const redirectIfVorgangExists = async (request: Request) => { }); } - const isTokenValid = await hasValidToken(caseId, caseToken); + return true; - if (!isTokenValid) { - return fail(400, { - success: false, - caseId, - error: { message: 'Der Token ist ungültig.' } - }); - } + // const isTokenValid = await hasValidToken(caseId, caseToken); - redirect(303, `/list/${caseId}?token=${caseToken}`); + // if (!isTokenValid) { + // return fail(400, { + // success: false, + // caseId, + // error: { message: 'Der Token ist ungültig.' } + // }); + // } + + // redirect(303, `/list/${caseId}?token=${caseToken}`); }; -export const getVorgangByCaseId = ({ params }) => { - const prefix = params.vorgang ? `${params.vorgang}/` : ''; - const stream = client.listObjectsV2(BUCKET, prefix, false, ''); - const result = new ReadableStream({ - start(controller) { - stream.on('data', (data) => { - if (prefix === '') { - if (data.prefix) - controller.enqueue(`${JSON.stringify({ ...data, name: data.prefix.slice(0, -1) })}\n`); - return; - } - - const name = data.name.slice(prefix.length); - if (name === 'config.json') return; - // zugangscode datei - if (name === '__perm__') return; - - controller.enqueue(`${JSON.stringify({ ...data, name, prefix })}\n`); - }); - stream.on('end', () => { - controller.close(); - }); - }, - cancel() { - stream.destroy(); - } - }); - - return new Response(result, { - headers: { - 'content-type': 'text/event-stream' - } - }); -}; - -export const hasValidToken = async (caseId: string, caseToken: string) => { +const hasValidToken = async (caseId: string, caseToken: string) => { const objPath = `${caseId}/${TOKENFILENAME}`; try { @@ -84,9 +107,17 @@ export const hasValidToken = async (caseId: string, caseToken: string) => { const res = await client.getObject(BUCKET, objPath); - const savedToken = await new Response(res).text(); + const token = await new Response(res).text(); - return savedToken === caseToken ? true : false; + if (!token) { + return fail(400, { + success: false, + caseId, + error: { message: 'Der Token ist ungültig.' } + }); + } + + return token === caseToken ? true : false; } catch (error) { if (error.name == 'S3Error') { console.log(error); diff --git a/src/routes/anmeldung/+page.server.ts b/src/routes/anmeldung/+page.server.ts index be19d11..362a0ca 100644 --- a/src/routes/anmeldung/+page.server.ts +++ b/src/routes/anmeldung/+page.server.ts @@ -1,9 +1,15 @@ import { loginUser, logoutUser } from '$lib/server/authService'; -import { redirectIfVorgangExists } from '$lib/server/vorgangService.js'; - +import { getVorgangByCaseId } from '$lib/server/vorgangService.js'; export const actions = { - login: ({ request, cookies }) => loginUser({request, cookies}), + login: ({ request, cookies }) => loginUser({ request, cookies }), logout: (event) => logoutUser(event), - redirectToVorgang: ({request}) => redirectIfVorgangExists(request) + getVorgangById: async ({ request }) => { + const data = await request.formData(); + const caseId = data.get('case-id'); + const caseToken = data.get('case-token'); + const result = await getVorgangByCaseId(caseId, caseToken); + + console.log(result); + } } as const; diff --git a/src/routes/anmeldung/+page.svelte b/src/routes/anmeldung/+page.svelte index f68f9ea..f937a51 100644 --- a/src/routes/anmeldung/+page.svelte +++ b/src/routes/anmeldung/+page.svelte @@ -24,7 +24,7 @@