kundenplattform/templates/organisation.html
Thomas Stallinger 1fdac84220 Self-Service: Passwort ändern (POST /organisation/passwort)
Neue Sektion 'Mein Konto' auf der bestehenden /organisation-Seite. Jeder
eingeloggte Nutzer darf sein eigenes Passwort ändern (kein
require_org_admin nötig, anders als bei /organisation/konten für fremde
Konten). Prüft aktuelles Passwort per user_manager.authenticate() (gleiches
Muster wie der Login), validiert das neue Passwort explizit gegen die
bestehende Policy (>=12 Zeichen, nicht gleich der E-Mail) aus der
Sicherheitshärtung vom 25.08.2026, zeigt Fehler inline auf derselben Seite
statt als nackte HTTPException.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-26 09:48:33 +02:00

94 lines
3.7 KiB
HTML

{% extends "base.html" %}
{% block title %}Organisation — Tuxflotte{% endblock %}
{% block content %}
<h2>Organisation</h2>
<form method="post" action="/organisation">
<label for="name">Name</label>
<input type="text" id="name" name="name" value="{{ organization.name }}" required>
<label for="kontakt_name">Ansprechpartner:in</label>
<input type="text" id="kontakt_name" name="kontakt_name" value="{{ organization.kontakt_name or '' }}">
<label for="adresse">Adresse</label>
<input type="text" id="adresse" name="adresse" value="{{ organization.adresse or '' }}">
<label for="telefon">Telefon</label>
<input type="text" id="telefon" name="telefon" value="{{ organization.telefon or '' }}">
<label for="kontakt_email">Kontakt-E-Mail</label>
<input type="email" id="kontakt_email" name="kontakt_email" value="{{ organization.kontakt_email or '' }}">
<label for="notizen">Notizen</label>
<textarea id="notizen" name="notizen" rows="3">{{ organization.notizen or '' }}</textarea>
<button type="submit">Speichern</button>
</form>
<section>
<h3>Mein Konto</h3>
{% if passwort_fehler %}<p><mark>{{ passwort_fehler }}</mark></p>{% endif %}
<form method="post" action="/organisation/passwort">
<label for="aktuelles_passwort">Aktuelles Passwort</label>
<input type="password" id="aktuelles_passwort" name="aktuelles_passwort" required>
<label for="neues_passwort">Neues Passwort</label>
<input type="password" id="neues_passwort" name="neues_passwort" required minlength="12">
<small>Mindestens 12 Zeichen, darf nicht der E-Mail-Adresse entsprechen.</small>
<label for="neues_passwort_wiederholung">Neues Passwort (Wiederholung)</label>
<input type="password" id="neues_passwort_wiederholung" name="neues_passwort_wiederholung" required minlength="12">
<button type="submit">Passwort ändern</button>
</form>
</section>
<section>
<h3>Kolleg:innen</h3>
{% if not benutzer %}
<p>Keine Konten gefunden.</p>
{% else %}
<figure>
<table>
<thead><tr><th>E-Mail</th><th>Org-Admin</th><th>Angelegt</th>{% if user.is_superuser or user.ist_organisationsadmin %}<th></th>{% endif %}</tr></thead>
<tbody>
{% for b in benutzer %}
<tr>
<td>{{ b.email }}</td>
<td>{{ "ja" if b.ist_organisationsadmin else "nein" }}</td>
<td>{{ b.created_at }}</td>
{% if user.is_superuser or user.ist_organisationsadmin %}
<td>
{% if b.id != user.id|string %}
<form method="post" action="/organisation/konten/{{ b.id }}/loeschen">
<button type="submit" class="outline secondary">Löschen</button>
</form>
{% endif %}
</td>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
</figure>
{% endif %}
{% if user.is_superuser or user.ist_organisationsadmin %}
<details>
<summary role="button" class="secondary outline">Neues Konto anlegen</summary>
<form method="post" action="/organisation/konten">
<label for="konto_email">E-Mail</label>
<input type="email" id="konto_email" name="email" required>
<label for="konto_password">Passwort</label>
<input type="password" id="konto_password" name="password" required>
<label>
<input type="checkbox" name="ist_organisationsadmin">
Admin dieser Organisation (darf Kolleg:innen-Konten verwalten)
</label>
<button type="submit">Anlegen</button>
</form>
</details>
{% endif %}
</section>
{% endblock %}