feat(settings): eigene Unterseite für User-Einstellungen + Passwort-Wechsel
Header: Profil- und Modell-Dropdowns rausgenommen, dafür ein
"⚙ Einstellungen"-Link. Klick öffnet eine eigene Settings-View
(toggled die main-View aus) mit drei Sektionen:
- Standard-Profil (sofort speichernd)
- Standard-LLM-Modell (sofort speichernd, leer = Worker-Default)
- Passwort ändern (aktuelles + neues + Bestätigung)
Neuer Endpoint POST /api/auth/me/password — verlangt zwingend das
aktuelle Passwort (verhindert Übernahme via offene Browser-Session).
Admin-Reset über /api/admin/users/<id>/password bleibt unberührt.
Layout: Settings-View ist eine Card mit max-width 640px, jede
Sektion durch Trennlinie abgegrenzt. Inline-Status-Meldungen
("Standard-Profil ist jetzt: …") direkt unter den Controls.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -27,16 +27,7 @@
|
||||
<span class="muted desktop-only">Angemeldet als</span>
|
||||
<strong id="user-name"></strong>
|
||||
<span id="user-admin-badge" class="badge admin-badge hidden">Admin</span>
|
||||
<span id="header-profile-wrap" class="header-profile-wrap hidden">
|
||||
<span class="muted desktop-only">·</span>
|
||||
<span class="muted desktop-only">Profil:</span>
|
||||
<select id="header-profile" class="header-profile" title="Standard-Profil — wird sofort gespeichert"></select>
|
||||
</span>
|
||||
<span id="header-model-wrap" class="header-profile-wrap hidden">
|
||||
<span class="muted desktop-only">·</span>
|
||||
<span class="muted desktop-only">Modell:</span>
|
||||
<select id="header-model" class="header-profile" title="Standard-LLM — wird sofort gespeichert. Leer = Worker-Default."></select>
|
||||
</span>
|
||||
<button type="button" id="settings-btn" class="btn-link" title="Eigene Einstellungen — Profil, Modell, Passwort">⚙ Einstellungen</button>
|
||||
<button type="button" id="logout-btn" class="btn-link">Abmelden</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -64,6 +55,50 @@
|
||||
</div>
|
||||
|
||||
<main id="app" class="hidden">
|
||||
<!-- Settings-View — eigene "Unterseite" für Profil/Modell/Passwort -->
|
||||
<section id="settings-view" class="card hidden settings-view">
|
||||
<div class="settings-head">
|
||||
<h2>Einstellungen für <span id="settings-username">…</span></h2>
|
||||
<button type="button" id="settings-back" class="btn-link">← zurück</button>
|
||||
</div>
|
||||
|
||||
<div class="settings-section">
|
||||
<h3>Standard-Profil</h3>
|
||||
<p class="muted">Wird bei jedem neuen Upload vorausgewählt. Pro Upload überschreibbar.</p>
|
||||
<select id="settings-profile" class="settings-input"></select>
|
||||
<p id="settings-profile-msg" class="msg"></p>
|
||||
</div>
|
||||
|
||||
<div class="settings-section" id="settings-model-section">
|
||||
<h3>Standard-LLM-Modell</h3>
|
||||
<p class="muted">Leer = der Mac-Worker entscheidet (sein .env-Default). Wechsel braucht keinen Worker-Restart — Ollama lädt das gewählte Modell beim ersten Job nach.</p>
|
||||
<select id="settings-model" class="settings-input"></select>
|
||||
<p id="settings-model-msg" class="msg"></p>
|
||||
</div>
|
||||
|
||||
<div class="settings-section">
|
||||
<h3>Passwort ändern</h3>
|
||||
<form id="settings-pw-form" autocomplete="off">
|
||||
<label>
|
||||
Aktuelles Passwort
|
||||
<input type="password" id="pw-current" autocomplete="current-password" required minlength="1" />
|
||||
</label>
|
||||
<label>
|
||||
Neues Passwort <span class="muted">(min. 8 Zeichen)</span>
|
||||
<input type="password" id="pw-new" autocomplete="new-password" required minlength="8" />
|
||||
</label>
|
||||
<label>
|
||||
Neues Passwort wiederholen
|
||||
<input type="password" id="pw-confirm" autocomplete="new-password" required minlength="8" />
|
||||
</label>
|
||||
<button type="submit" id="pw-save">Passwort speichern</button>
|
||||
</form>
|
||||
<p id="settings-pw-msg" class="msg"></p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Haupt-View (Upload + Jobs + Admin) -->
|
||||
<div id="main-view">
|
||||
<section class="card upload-card">
|
||||
<h2 class="desktop-only">Neue Aufnahme hochladen</h2>
|
||||
<form id="upload-form">
|
||||
@@ -178,6 +213,7 @@
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div><!-- /main-view -->
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
|
||||
Reference in New Issue
Block a user