144 lines
6.4 KiB
Plaintext
144 lines
6.4 KiB
Plaintext
<!DOCTYPE html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>User Verwaltung</title>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<!-- Bootstrap 5 -->
|
|
<link rel="stylesheet" href="/css/bootstrap.min.css">
|
|
</head>
|
|
<body class="bg-light">
|
|
|
|
<!-- NAVBAR -->
|
|
<nav class="navbar navbar-dark bg-dark px-3">
|
|
<span class="navbar-brand">User Verwaltung</span>
|
|
<div>
|
|
<a href="/dashboard" class="btn btn-outline-light btn-sm me-2">Dashboard</a>
|
|
<a href="/logout" class="btn btn-outline-danger btn-sm">Logout</a>
|
|
</div>
|
|
</nav>
|
|
|
|
<!-- CONTENT -->
|
|
<div class="container mt-4">
|
|
<%- include("partials/flash") %>
|
|
<div class="card shadow">
|
|
<div class="card-body">
|
|
|
|
<h4 class="mb-3">Benutzerübersicht</h4>
|
|
|
|
<div class="table-responsive">
|
|
<div class="mb-3 text-end">
|
|
<a href="/admin/create-user" class="btn btn-primary">
|
|
+ Neuen Benutzer anlegen
|
|
</a>
|
|
</div>
|
|
<table class="table table-bordered table-hover align-middle">
|
|
<thead class="table-dark">
|
|
<tr>
|
|
<th>ID</th>
|
|
<th>Benutzername</th>
|
|
<th>Rolle</th>
|
|
<th>Status</th>
|
|
<th style="width: 340px;">Aktionen</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
|
|
<% users.forEach(u => { %>
|
|
<tr>
|
|
<td><%= u.id %></td>
|
|
<td><%= u.username %></td>
|
|
<td>
|
|
<% if (u.role === "arzt") { %>
|
|
<span class="badge bg-warning text-dark">Arzt</span>
|
|
<% } else { %>
|
|
<span class="badge bg-info text-dark">Mitarbeiter</span>
|
|
<% } %>
|
|
</td>
|
|
<td>
|
|
<% if (u.active === 0) { %>
|
|
<span class="badge bg-secondary">Inaktiv</span>
|
|
<% } else if (u.lock_until && new Date(u.lock_until) > new Date()) { %>
|
|
<span class="badge bg-danger">Gesperrt</span>
|
|
<% } else { %>
|
|
<span class="badge bg-success">Aktiv</span>
|
|
<% } %>
|
|
</td>
|
|
|
|
<td>
|
|
<% if (u.id !== currentUser.id) { %>
|
|
|
|
<!-- AKTIV / INAKTIV -->
|
|
<% if (u.active === 1) { %>
|
|
<form method="POST"
|
|
action="/admin/users/deactivate/<%= u.id %>"
|
|
class="mb-1">
|
|
<button class="btn btn-sm btn-secondary w-100">
|
|
Deaktivieren
|
|
</button>
|
|
</form>
|
|
<% } else { %>
|
|
<form method="POST"
|
|
action="/admin/users/activate/<%= u.id %>"
|
|
class="mb-1">
|
|
<button class="btn btn-sm btn-success w-100">
|
|
Aktivieren
|
|
</button>
|
|
</form>
|
|
<% } %>
|
|
|
|
<!-- ROLLE ÄNDERN -->
|
|
<form method="POST"
|
|
action="/admin/users/change-role/<%= u.id %>"
|
|
class="mb-1">
|
|
<select name="role"
|
|
class="form-select form-select-sm mb-1">
|
|
<option value="mitarbeiter"
|
|
<%= u.role === "mitarbeiter" ? "selected" : "" %>>
|
|
Mitarbeiter
|
|
</option>
|
|
<option value="arzt"
|
|
<%= u.role === "arzt" ? "selected" : "" %>>
|
|
Arzt
|
|
</option>
|
|
</select>
|
|
<button class="btn btn-sm btn-warning w-100">
|
|
Rolle ändern
|
|
</button>
|
|
</form>
|
|
|
|
<!-- PASSWORT RESET -->
|
|
<form method="POST"
|
|
action="/admin/users/reset-password/<%= u.id %>">
|
|
<input type="password"
|
|
name="password"
|
|
class="form-control form-control-sm mb-1"
|
|
placeholder="Neues Passwort"
|
|
required>
|
|
<button class="btn btn-sm btn-danger w-100"
|
|
onclick="return confirm('Passwort wirklich zurücksetzen?')">
|
|
Passwort zurücksetzen
|
|
</button>
|
|
</form>
|
|
|
|
<% } else { %>
|
|
<span class="text-muted fst-italic">
|
|
Du selbst
|
|
</span>
|
|
<% } %>
|
|
</td>
|
|
</tr>
|
|
<% }) %>
|
|
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</body>
|
|
</html>
|