From 25037f4798f8603ae8be40832ed99cdde235ded7 Mon Sep 17 00:00:00 2001 From: Jonas Kappa Date: Tue, 7 Oct 2025 23:07:49 +0200 Subject: [PATCH] Added administration and password change --- package-lock.json | 4 +- package.json | 2 +- src/app.css | 11 + src/app.html | 1 + src/lib/Modal.svelte | 85 ++++++++ src/routes/+page.svelte | 63 +++++- src/routes/admin/+page.svelte | 350 +++++++++++++++++++++++++++++++ src/routes/settings/+page.svelte | 2 +- 8 files changed, 508 insertions(+), 10 deletions(-) create mode 100644 src/lib/Modal.svelte create mode 100644 src/routes/admin/+page.svelte diff --git a/package-lock.json b/package-lock.json index 6857a2b..55d6862 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "jeopardy", - "version": "1.0.4", + "version": "1.0.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "jeopardy", - "version": "1.0.4", + "version": "1.0.5", "dependencies": { "axios": "^1.12.2", "cookie": "^1.0.2" diff --git a/package.json b/package.json index 7256c40..ac1613e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "jeopardy", "private": true, - "version": "1.0.4", + "version": "1.0.5", "type": "module", "scripts": { "dev": "vite dev", diff --git a/src/app.css b/src/app.css index 3f50d36..01614a7 100644 --- a/src/app.css +++ b/src/app.css @@ -17,6 +17,17 @@ background-color: rgba(0, 0, 0, 0.1); } + .btn:disabled { + color: grey !important; + border-color: gray !important; + cursor: unset !important; + } + + .btn:disabled:hover { + background-color: unset !important; + cursor: unset !important; + } + .inputField { padding: 8px; } diff --git a/src/app.html b/src/app.html index d48b32c..f27cd6f 100644 --- a/src/app.html +++ b/src/app.html @@ -6,6 +6,7 @@ name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" /> + %sveltekit.head% diff --git a/src/lib/Modal.svelte b/src/lib/Modal.svelte new file mode 100644 index 0000000..6a49997 --- /dev/null +++ b/src/lib/Modal.svelte @@ -0,0 +1,85 @@ + + + + { + showModal = false; + if (oncloseFn) oncloseFn(); + }} + onclick={(e) => { + if (e.target === dialog) dialog.close(); + }} + class="rounded-md" +> +
+ {@render header?.()} + {@render children?.()} + +
+ {@render actionButtons?.()} + + +
+
+
+ + diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 6aed519..b452faf 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,7 +1,9 @@
-
-

Jeopardy

+
+

Jeopardy

- goto("/admin")}>Administration + {/if} + + + +
+ + {UserSvelte.username} +
@@ -33,3 +73,14 @@ >
+ + diff --git a/src/routes/admin/+page.svelte b/src/routes/admin/+page.svelte new file mode 100644 index 0000000..7a9bfd3 --- /dev/null +++ b/src/routes/admin/+page.svelte @@ -0,0 +1,350 @@ + + +
+
+

Administration

+
+ +
+
+ {#each users as user (user._id)} +
+
{user._id}
+
{user.username}
+
{user.role}
+
+ + + + + + +
+
+ {/each} +
+ +
+ + + {#snippet header()} +

Nutzer hinzufügen

+ {/snippet} + +
+ +
+ +
+ {#if error.length > 0} +
{error}
+ {/if} +
+
+ + + {#snippet header()} +

Nutzer löschen

+ {/snippet} + +
Soll Nutzer {selectedUser?.username} wirklich gelöscht werden?
+ {#if error.length > 0} +
{error}
+ {/if} +
+ + + {#snippet header()} +

Passwort zurücksetzen

+ {/snippet} + +
+ Soll das Passwort von Nutzer {selectedUser?.username} wirklich zurückgesetzt werden? +
+ {#if error.length > 0} +
{error}
+ {/if} +
+ + + {#snippet header()} +

Rolle von {selectedUser?.username} ändern

+ {/snippet} + +
+ {#if selectedUser} + + {/if} +
+ {#if error.length > 0} +
{error}
+ {/if} +
+ + diff --git a/src/routes/settings/+page.svelte b/src/routes/settings/+page.svelte index bc7df54..a85c7ec 100644 --- a/src/routes/settings/+page.svelte +++ b/src/routes/settings/+page.svelte @@ -38,7 +38,7 @@ } -
+

Einstellungen