revised init db pw to pin, and check name routine
This commit is contained in:
@@ -13,7 +13,8 @@
|
|||||||
"format": "prettier --write .",
|
"format": "prettier --write .",
|
||||||
"lint": "prettier --check . && eslint .",
|
"lint": "prettier --check . && eslint .",
|
||||||
"test:unit": "vitest",
|
"test:unit": "vitest",
|
||||||
"test": "npm run test:unit -- --run && npm run test:e2e"
|
"test": "npm run test:unit -- --run && npm run test:e2e",
|
||||||
|
"init-db": "tsx ./src/init/init_db.ts"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/compat": "^1.2.9",
|
"@eslint/compat": "^1.2.9",
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ db.exec(createSQLStmt);
|
|||||||
// check if there are any users; if not add one default admin one
|
// check if there are any users; if not add one default admin one
|
||||||
const userPassword = 'pass-123';
|
const userPassword = 'pass-123';
|
||||||
const hashedUserPassword = new jsSHA('SHA-512', 'TEXT').update(userPassword).getHash('HEX');
|
const hashedUserPassword = new jsSHA('SHA-512', 'TEXT').update(userPassword).getHash('HEX');
|
||||||
const checkInsertSQLStmt = `INSERT INTO users (name, pin) SELECT 'admin', '${hashedUserPassword}'
|
const checkInsertSQLStmt = `INSERT INTO users (name, pw) SELECT 'admin', '${hashedUserPassword}'
|
||||||
WHERE NOT EXISTS (SELECT * FROM users);`;
|
WHERE NOT EXISTS (SELECT * FROM users);`;
|
||||||
|
|
||||||
db.exec(checkInsertSQLStmt);
|
db.exec(checkInsertSQLStmt);
|
||||||
|
|||||||
Binary file not shown.
@@ -143,8 +143,8 @@ export const vorgangExists = function (vorgangToken: string | null) {
|
|||||||
return found;
|
return found;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const vorgangNameExists = function (vorgangName: string) {
|
export const vorgangNameExists = async (vorgangName: string) => {
|
||||||
const vorgaenge = getVorgaenge();
|
const vorgaenge = await getVorgaenge();
|
||||||
const vorgaengeNames = vorgaenge.map((vorgang) => vorgang.vorgangName);
|
const vorgaengeNames = vorgaenge.map((vorgang) => vorgang.vorgangName);
|
||||||
|
|
||||||
const found = vorgaengeNames.indexOf(vorgangName) != -1;
|
const found = vorgaengeNames.indexOf(vorgangName) != -1;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { getVorgaenge } from '$lib/server/vorgangService';
|
|||||||
import type { PageServerLoad } from '../../(token-based)/view/$types';
|
import type { PageServerLoad } from '../../(token-based)/view/$types';
|
||||||
|
|
||||||
export const load: PageServerLoad = async () => {
|
export const load: PageServerLoad = async () => {
|
||||||
const vorgangList = getVorgaenge();
|
const vorgangList = await getVorgaenge();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
vorgangList
|
vorgangList
|
||||||
|
|||||||
@@ -19,13 +19,13 @@
|
|||||||
|
|
||||||
function generatePIN() {
|
function generatePIN() {
|
||||||
return Math.random()
|
return Math.random()
|
||||||
.toString(36)
|
.toString(36)
|
||||||
.slice(2, 2 + PINLength);
|
.slice(2, 2 + PINLength);
|
||||||
}
|
}
|
||||||
let vorgangPIN = ''
|
let vorgangPIN = '';
|
||||||
let vorgangPINOld = ''
|
let vorgangPINOld = '';
|
||||||
$: vorgangPINOld = generatePIN();
|
$: vorgangPINOld = generatePIN();
|
||||||
$: vorgangPIN = vorgangPINOld
|
$: vorgangPIN = vorgangPINOld;
|
||||||
|
|
||||||
let vorgangExists = undefined;
|
let vorgangExists = undefined;
|
||||||
$: vorgangExists = false;
|
$: vorgangExists = false;
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
$: inProgress = form === null;
|
$: inProgress = form === null;
|
||||||
|
|
||||||
let formErrors: Record<string,any> | null;
|
let formErrors: Record<string, any> | null;
|
||||||
|
|
||||||
async function validateForm() {
|
async function validateForm() {
|
||||||
let data = new FormData();
|
let data = new FormData();
|
||||||
@@ -139,6 +139,7 @@
|
|||||||
// big endian!
|
// big endian!
|
||||||
let file = files[0];
|
let file = files[0];
|
||||||
let file_header = file.slice(0, 4);
|
let file_header = file.slice(0, 4);
|
||||||
|
console.log(file_header);
|
||||||
let header_bytes = await file_header.bytes();
|
let header_bytes = await file_header.bytes();
|
||||||
let file_header_hex = '0x' + header_bytes.toHex().toString();
|
let file_header_hex = '0x' + header_bytes.toHex().toString();
|
||||||
|
|
||||||
@@ -152,33 +153,36 @@
|
|||||||
|
|
||||||
// `/(angemeldet)/view` return true or false
|
// `/(angemeldet)/view` return true or false
|
||||||
async function checkVorgangExists(vorgangName: string) {
|
async function checkVorgangExists(vorgangName: string) {
|
||||||
|
|
||||||
if (vorgangName == '') {
|
if (vorgangName == '') {
|
||||||
vorgangPIN = vorgangPINOld;
|
vorgangPIN = vorgangPINOld;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let url = `/api/list/${vorgangName}`
|
try {
|
||||||
|
const url = `/api/list/${vorgangName}`;
|
||||||
|
const response = await fetch(url, { method: 'HEAD' });
|
||||||
|
|
||||||
const response = await fetch(url, { method: 'HEAD'});
|
if (response.status === 200) {
|
||||||
const status = response.status;
|
console.log('Vorgang existiert:', vorgangName);
|
||||||
|
vorgangExists = true;
|
||||||
if (status == 200) {
|
const token = await getVorgangPIN(vorgangName);
|
||||||
vorgangExists = true;
|
vorgangPIN = token;
|
||||||
const token = await getVorgangPIN(vorgangName);
|
return true;
|
||||||
vorgangPIN = token;
|
} else {
|
||||||
|
console.log('Vorgang existiert nicht!');
|
||||||
return true
|
vorgangExists = false;
|
||||||
|
vorgangPIN = vorgangPINOld;
|
||||||
} else {
|
return false;
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Fehler bei checkVorgangExists:', err);
|
||||||
vorgangExists = false;
|
vorgangExists = false;
|
||||||
vorgangPIN = vorgangPINOld;
|
vorgangPIN = vorgangPINOld;
|
||||||
return false
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getVorgangPIN(vorgangName: string) {
|
async function getVorgangPIN(vorgangName: string) {
|
||||||
|
|
||||||
if (vorgangName == '') return;
|
if (vorgangName == '') return;
|
||||||
|
|
||||||
let url = `/api/list/${vorgangName}/vorgangPIN`;
|
let url = `/api/list/${vorgangName}/vorgangPIN`;
|
||||||
@@ -190,7 +194,6 @@
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="mx-auto max-w-2xl">
|
<div class="mx-auto max-w-2xl">
|
||||||
@@ -211,7 +214,7 @@
|
|||||||
><span class="flex"
|
><span class="flex"
|
||||||
>{#if formErrors?.vorgang}
|
>{#if formErrors?.vorgang}
|
||||||
<span class="inline-block mr-1"><Exclamation /></span>
|
<span class="inline-block mr-1"><Exclamation /></span>
|
||||||
{/if} Vorgang</span
|
{/if} Vorgangsname</span
|
||||||
></label
|
></label
|
||||||
>
|
>
|
||||||
<div class="mt-2">
|
<div class="mt-2">
|
||||||
@@ -241,10 +244,10 @@
|
|||||||
|
|
||||||
<div>
|
<div>
|
||||||
<label for="name" class="block text-sm font-medium leading-6 text-gray-900"
|
<label for="name" class="block text-sm font-medium leading-6 text-gray-900"
|
||||||
><span class="flex"
|
><span class="flex"
|
||||||
>{#if formErrors?.name}
|
>{#if formErrors?.name}
|
||||||
<span class="inline-block mr-1"><Exclamation /></span>
|
<span class="inline-block mr-1"><Exclamation /></span>
|
||||||
{/if} Name</span
|
{/if} Modellname</span
|
||||||
></label
|
></label
|
||||||
>
|
>
|
||||||
<div class="mt-2">
|
<div class="mt-2">
|
||||||
@@ -283,16 +286,19 @@
|
|||||||
type="text"
|
type="text"
|
||||||
name="vorgang-pin"
|
name="vorgang-pin"
|
||||||
id="vorgang-pin"
|
id="vorgang-pin"
|
||||||
on:input="{ (ev) => { vorgangPINOld = ev.target.value }}"
|
on:input={(ev) => {
|
||||||
|
vorgangPINOld = ev.target.value;
|
||||||
|
}}
|
||||||
class="block flex-1 border-0 bg-transparent py-1.5 pl-1 text-gray-900 placeholder:text-gray-400 focus:ring-0 sm:text-sm sm:leading-6"
|
class="block flex-1 border-0 bg-transparent py-1.5 pl-1 text-gray-900 placeholder:text-gray-400 focus:ring-0 sm:text-sm sm:leading-6"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
class="rounded-md bg-blue-500 px-3 py-2 text-sm font-semibold text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
|
class="rounded-md bg-blue-500 px-3 py-2 text-sm font-semibold text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
|
||||||
on:click="{() => {
|
on:click={() => {
|
||||||
vorgangPIN = vorgangPINOld = generatePIN(); }}"
|
vorgangPIN = vorgangPINOld = generatePIN();
|
||||||
type="button">
|
}}
|
||||||
|
type="button"
|
||||||
|
>
|
||||||
Generiere Zugangs-PIN
|
Generiere Zugangs-PIN
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
import { client } from '$lib/minio';
|
import { client } from '$lib/minio';
|
||||||
import {
|
import { deleteVorgangByToken, vorgangNameExists } from '$lib/server/vorgangService';
|
||||||
deleteVorgangByToken,
|
|
||||||
vorgangNameExists
|
|
||||||
} from '$lib/server/vorgangService';
|
|
||||||
|
|
||||||
export async function DELETE({ params }) {
|
export async function DELETE({ params }) {
|
||||||
const vorgangToken = params.vorgang;
|
const vorgangToken = params.vorgang;
|
||||||
@@ -29,13 +26,15 @@ export async function DELETE({ params }) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function HEAD({ params }) {
|
export async function HEAD({ params }) {
|
||||||
const vorgangName = params.vorgang;
|
try {
|
||||||
|
const vorgangName = params.vorgang;
|
||||||
|
const existing = await vorgangNameExists(vorgangName);
|
||||||
|
|
||||||
const existing = vorgangNameExists(vorgangName);
|
return new Response(null, {
|
||||||
|
status: existing ? 200 : 404
|
||||||
if (existing) {
|
});
|
||||||
return new Response(null, { status: 200 });
|
} catch (err) {
|
||||||
} else {
|
console.error('Fehler im HEAD-Handler:', err);
|
||||||
return new Response(null, { status: 404 });
|
return new Response(null, { status: 500 });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ export async function GET({ params }) {
|
|||||||
|
|
||||||
const getPINSQLStatement = `SELECT pin FROM cases WHERE name = ?;`;
|
const getPINSQLStatement = `SELECT pin FROM cases WHERE name = ?;`;
|
||||||
const row = db.prepare(getPINSQLStatement).get(vorgangName);
|
const row = db.prepare(getPINSQLStatement).get(vorgangName);
|
||||||
const vorgangPIN = row.pin;
|
const vorgangPIN = row?.pin;
|
||||||
|
|
||||||
if (vorgangPIN) {
|
if (vorgangPIN) {
|
||||||
return new Response(vorgangPIN, { status: 200 });
|
return new Response(vorgangPIN, { status: 200 });
|
||||||
|
|||||||
Reference in New Issue
Block a user