refactor login page, change routes to token-based, add service classes
This commit is contained in:
68
src/lib/server/vorgangService.ts
Normal file
68
src/lib/server/vorgangService.ts
Normal file
@@ -0,0 +1,68 @@
|
||||
import { fail, redirect } from '@sveltejs/kit';
|
||||
import { client } from '$lib/minio';
|
||||
import { checkIfExactDirectoryExists } from './s3ClientService';
|
||||
|
||||
/**
|
||||
*
|
||||
* @param request
|
||||
* @returns
|
||||
*/
|
||||
export const getVorgangByCaseNumber = async ( request: Request) => {
|
||||
const data = await request.formData();
|
||||
const caseNumber = data.get('caseNumber');
|
||||
const user_token = data.get('token');
|
||||
|
||||
if (!caseNumber) {
|
||||
return fail(400, {
|
||||
success: false,
|
||||
caseNumber,
|
||||
error: { message: 'Die Vorgangsnummer darf nicht leer sein.' }
|
||||
});
|
||||
}
|
||||
|
||||
if (typeof caseNumber === 'string' && !(await checkIfExactDirectoryExists(caseNumber))) {
|
||||
return fail(400, {
|
||||
success: false,
|
||||
caseNumber,
|
||||
error: { message: 'Die Vorgangsnummer existiert in dieser Anwendung nicht.' }
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const token = await getTokenOrNull(caseNumber);
|
||||
|
||||
if (token && token != user_token) {
|
||||
return fail(400, {
|
||||
success: false,
|
||||
caseNumber,
|
||||
error: { message: 'Der Token ist falsch.' }
|
||||
});
|
||||
}
|
||||
|
||||
redirect(303, `/list/${caseNumber}`);
|
||||
}
|
||||
|
||||
|
||||
const getTokenOrNull = async (vorgang) => {
|
||||
const code_name = '__perm__';
|
||||
const obj_path = `${vorgang}/${code_name}`;
|
||||
|
||||
let resp = null;
|
||||
let code_saved = '';
|
||||
|
||||
try {
|
||||
resp = await client.getObject('tatort', obj_path);
|
||||
|
||||
code_saved = await new Response(resp).text();
|
||||
} catch (error) {
|
||||
if (error.name == 'S3Error') {
|
||||
resp = null;
|
||||
}
|
||||
}
|
||||
|
||||
if (resp != null) {
|
||||
return code_saved;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user