5ecd143535
- Kein Node.js, kein npm, kein Build-Schritt mehr - HTMX 2.0.4 + PicoCSS 2 vendored in backend/static/ - Jinja2 Templates für alle 9 Seiten (Dashboard, ZFS, Snapshots, Shares, Identities, Logs, Services, Navigator, Login) - HTMX Fragments für Live-Updates (30s Polling Dashboard) - JWT als httpOnly Cookie statt localStorage - Disk Usage zeigt TB/PB korrekt (Jinja2 serverseitig formatiert) - Update-safe: nur Python-Deps, keine npm-Abhängigkeiten Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
31 lines
1.2 KiB
HTML
31 lines
1.2 KiB
HTML
{% if not users %}
|
|
<p>Keine Benutzer gefunden.</p>
|
|
{% else %}
|
|
<table>
|
|
<thead><tr><th>Benutzer</th><th>UID</th><th>Shell</th><th>Status</th><th>Aktionen</th></tr></thead>
|
|
<tbody>
|
|
{% for user in users %}
|
|
<tr id="user-{{ user.username }}">
|
|
<td><strong>{{ user.username }}</strong></td>
|
|
<td>{{ user.uid }}</td>
|
|
<td style="font-family:monospace;font-size:0.8rem">{{ user.shell }}</td>
|
|
<td><span class="badge {% if user.locked %}badge-red{% else %}badge-green{% endif %}">{{ 'Gesperrt' if user.locked else 'Aktiv' }}</span></td>
|
|
<td>
|
|
<div class="actions">
|
|
<button class="outline secondary"
|
|
hx-post="/api/identities/users/{{ user.username }}/samba-password"
|
|
hx-prompt="Samba Passwort für {{ user.username }}:"
|
|
hx-swap="none">Samba PW</button>
|
|
<button class="outline secondary"
|
|
hx-delete="/api/identities/users/{{ user.username }}"
|
|
hx-confirm="Benutzer '{{ user.username }}' löschen?"
|
|
hx-target="#user-{{ user.username }}"
|
|
hx-swap="outerHTML">Löschen</button>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
{% endif %}
|