allow vorgangPIN to be changed on Vorgang page
includes: - UI and backend logic - adjustment to `NameItemEditor` to disallow deletion
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
export let currentName: string;
|
||||
export let vorgangToken: string | null;
|
||||
export let onSave: (n: string, o: string, t?: string) => unknown = () => {};
|
||||
export let onDelete: (n: string) => unknown = () => {};
|
||||
export let onDelete: (n: string) => unknown | null = () => {};
|
||||
|
||||
let localName = currentName;
|
||||
let isEditing = false;
|
||||
@@ -98,13 +98,15 @@
|
||||
>
|
||||
<Edit class="w-4 h-4" />
|
||||
</button>
|
||||
<button
|
||||
data-testid="delete-button"
|
||||
onclick={handleDeleteClick}
|
||||
class="text-gray-500 hover:text-red-600 transition"
|
||||
>
|
||||
<Trash class="w-4 h-4" />
|
||||
</button>
|
||||
{#if onDelete}
|
||||
<button
|
||||
data-testid="delete-button"
|
||||
onclick={handleDeleteClick}
|
||||
class="text-gray-500 hover:text-red-600 transition"
|
||||
>
|
||||
<Trash class="w-4 h-4" />
|
||||
</button>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
|
||||
@@ -236,13 +236,15 @@ export const vorgangPINValidation = function (vorgangToken: string, vorgangPIN:
|
||||
};
|
||||
|
||||
/**
|
||||
* Rename Vorgang
|
||||
* Change VorgangName or VorgangPIN
|
||||
* @param vorgangToken
|
||||
* @param newName
|
||||
* @returns {int} number of affected lines
|
||||
*/
|
||||
export const renameVorgangByToken = function (vorgangToken: string, newName: string) {
|
||||
const renameSQLStmt = 'UPDATE cases set name = ? WHERE token = ?';
|
||||
export const updateVorgangAttrByToken = function (vorgangToken: string,
|
||||
newName: string,
|
||||
column: string) {
|
||||
const renameSQLStmt = `UPDATE cases set ${column} = ? WHERE token = ?`;
|
||||
const statement = db.prepare(renameSQLStmt);
|
||||
|
||||
let info;
|
||||
|
||||
@@ -190,6 +190,34 @@
|
||||
}
|
||||
}
|
||||
|
||||
async function savePIN(newVorgangPIN: string, oldVorgangPIN: string) {
|
||||
open = true;
|
||||
inProgress = true;
|
||||
isError = false;
|
||||
try {
|
||||
const res = await fetch(API_ROUTES.VORGANG(vorgangToken), {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({ vorgangToken, oldVorgangPIN, newVorgangPIN,
|
||||
changePIN: true})
|
||||
});
|
||||
|
||||
if (!res.ok) {
|
||||
throw new Error('Fehler beim Speichern');
|
||||
}
|
||||
await invalidateAll();
|
||||
crimesList = data.crimesList;
|
||||
open = false;
|
||||
} catch (err) {
|
||||
console.error('⚠️ Netzwerkfehler beim Speichern', err);
|
||||
isError = true;
|
||||
} finally {
|
||||
inProgress = false;
|
||||
}
|
||||
}
|
||||
|
||||
async function handleDelete(tatort: string) {
|
||||
open = true;
|
||||
inProgress = true;
|
||||
@@ -251,7 +279,13 @@ Mit freundlichen Grüßen,
|
||||
<h1 class="text-xl">{vorgangName}</h1>
|
||||
|
||||
{#if admin}
|
||||
Zugangs-PIN: {vorgangPIN}
|
||||
Zugangs-PIN:
|
||||
<NameItemEditor
|
||||
list={[]}
|
||||
currentName={vorgangPIN}
|
||||
onSave={savePIN}
|
||||
onDelete={null}
|
||||
/>
|
||||
<a class="pt-2 pb-6" href={constructMailToLink()}
|
||||
><Button disabled={isEmptyList}>Share Link</Button></a
|
||||
>
|
||||
|
||||
@@ -4,7 +4,7 @@ import {
|
||||
deleteVorgangByToken,
|
||||
getCrimesListByToken,
|
||||
vorgangNameExists,
|
||||
renameVorgangByToken
|
||||
updateVorgangAttrByToken
|
||||
} from '$lib/server/vorgangService';
|
||||
|
||||
export async function DELETE({ params }) {
|
||||
@@ -59,14 +59,26 @@ export async function GET({ params }) {
|
||||
}
|
||||
}
|
||||
|
||||
// rename vorgang
|
||||
// change Vorgang properties
|
||||
export async function PUT({ request }) {
|
||||
const data = await request.json();
|
||||
|
||||
const vorgangToken = data['vorgangToken'];
|
||||
const newVorgangName = data['newName'];
|
||||
|
||||
const res = renameVorgangByToken(vorgangToken, newVorgangName);
|
||||
const changePIN = data['changePIN'];
|
||||
|
||||
let attrChanged;
|
||||
let newValue;
|
||||
|
||||
if (changePIN) {
|
||||
attrChanged = 'pin';
|
||||
newValue = data['newVorgangPIN']
|
||||
} else {
|
||||
attrChanged = 'name';
|
||||
newValue = data['newName']
|
||||
}
|
||||
|
||||
const res = updateVorgangAttrByToken(vorgangToken, newValue, attrChanged);
|
||||
|
||||
if (!res) {
|
||||
return json({ msg: 'Fehler beim Umbenennen' }, { status: 400 });
|
||||
|
||||
Reference in New Issue
Block a user