From 167960b91ad3d59867c792a70237ec7a32f62cd3 Mon Sep 17 00:00:00 2001 From: Thomas Hackner Date: Tue, 14 Jul 2026 02:21:32 +0200 Subject: [PATCH] =?UTF-8?q?Benutzerverwaltung:=20=C3=BCbersichtliches=20La?= =?UTF-8?q?yout=20mit=20klaren=20Aktionen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Header mit Icon + Statistikleiste (Benutzer / Admins / Bewerbungen) - Karten-Layout (rund, Shadow), Sektionen mit Icons - Aktionen als einheitliche Icon+Label Buttons (Jobsuche, Anmelden als, Passwort, Löschen) statt gequetschter Textlinks, je eigene Farbe - Avatar-Initial + Admin-Badge mit Icon in der Tabelle - Passwort-Reset als eingeblendete Karte mit Abbrechen + Hinweis - Relative Zeitangaben (Erstellt, Audit) mit Tooltips - Audit-Sektion als eigene Karte Co-Authored-By: Claude --- views/admin.ejs | 335 +++++++++++++++++++++++++++++++----------------- 1 file changed, 219 insertions(+), 116 deletions(-) diff --git a/views/admin.ejs b/views/admin.ejs index 2ddbfed..a4a0fc9 100644 --- a/views/admin.ejs +++ b/views/admin.ejs @@ -6,7 +6,7 @@ <%- include('partials/header') %> -
+
@@ -14,133 +14,236 @@ Zurück zur Übersicht -

Benutzerverwaltung

-

Benutzer anlegen, Passwörter zurücksetzen und Benutzer inkl. aller ihrer Daten löschen.

+ <% var totalBewerbungen = users.reduce((s,u) => s + (u.anzahl_bewerbungen||0), 0); var adminCount = users.filter(u=>u.is_admin).length; %> - -
-

Neuen Benutzer anlegen

-
-
- - +
+
+

+ + + + + + Benutzerverwaltung +

+

Konten anlegen, Passwörter zurücksetzen, ein Konto übernehmen oder Benutzer inkl. aller Daten löschen.

+
+
+
+
<%= users.length %>
+
Benutzer
-
- - +
+
<%= adminCount %>
+
Admins
-
- -
+
+ +
+ +
+

+ + + + Neuen Benutzer anlegen +

+

Legt ein neues Konto an. Ein Admin kann ebenfalls Benutzer verwalten.

+ +
+ + +
+
+ + +
+
+ +
+ + +
+ + +
+
+

+ + + + Bestehende Benutzer +

+

Über „Anmelden als" übernimmst du ein Konto komplett — Admin-Rechte sind dabei pausiert, zurück über das Banner.

- -
+
+ + + + + + + + + + + + <% users.forEach(function(u) { %> + + + + + + + + + + + <% }); %> + +
BenutzernameRolleBewerbungenErstelltAktionen
+
+ + <%= String(u.username || '?').charAt(0).toUpperCase() %> + + <%= u.username %> + <% if (u.id === currentUserId) { %>(du)<% } %> +
+
+ <% if (u.is_admin) { %> + + + Admin + + <% } else { %> + Benutzer + <% } %> + <%= u.anzahl_bewerbungen %> + + +
+ + + Jobsuche + + <% if (u.id !== currentUserId) { %> +
+ +
+ <% } %> + + <% if (u.id !== currentUserId) { %> +
+ +
+ <% } %> +
+
+
+ - -
-

Bestehende Benutzer

-
- - - - - - - - - - - - <% users.forEach(function(u) { %> - - - - - - - - - - - <% }); %> - -
BenutzernameRolleBewerbungenErstelltAktionen
- <%= u.username %> - <% if (u.id === currentUserId) { %>(du)<% } %> - - <% if (u.is_admin) { %> - Admin - <% } else { %> - Benutzer - <% } %> - <%= u.anzahl_bewerbungen %><%= u.created_at %> - Jobsuche - <% if (u.id !== currentUserId) { %> -
- -
- <% } %> - - <% if (u.id !== currentUserId) { %> -
- -
- <% } %> -
-
-
- - -
-

Impersonationen (Audit)

-

Nachvollziehbar protokolliert: jeder Wechsel auf ein anderes Konto und jeder Rückwechsel.

-
- - - - - - - - - - - -
AdminAktionZeit
… wird geladen
-
+ +
+

+ + + + Impersonationen (Audit) +

+

Nachvollziehbar protokolliert: jeder Wechsel auf ein anderes Konto und jeder Rückwechsel.

+
+ + + + + + + + + + + +
AdminAktionZeit
… wird geladen
+
+
+ +