diff --git a/app/src/routes/(app)/einstellungen/+page.svelte b/app/src/routes/(app)/einstellungen/+page.svelte index 1984c95..84a263e 100644 --- a/app/src/routes/(app)/einstellungen/+page.svelte +++ b/app/src/routes/(app)/einstellungen/+page.svelte @@ -133,6 +133,34 @@ .join(', ') || '—'; } + // Passwort ändern + let pwAlt = $state(''); + let pwNeu = $state(''); + let pwWdh = $state(''); + let pwError = $state(''); + let pwSuccess = $state(''); + let pwSaving = $state(false); + + async function passwortAendern() { + if (!pwAlt || !pwNeu) { pwError = 'Alle Felder ausfüllen.'; return; } + if (pwNeu.length < 8) { pwError = 'Neues Passwort mindestens 8 Zeichen.'; return; } + if (pwNeu !== pwWdh) { pwError = 'Passwörter stimmen nicht überein.'; return; } + pwError = ''; pwSuccess = ''; pwSaving = true; + try { + const u = get(user); + // Altes Passwort prüfen via Login + await api.post('/auth/login', { email: u?.email, password: pwAlt }); + // Neues Passwort setzen + await api.put('/users/' + u?.id, { password: pwNeu }); + pwSuccess = 'Passwort geändert.'; + pwAlt = ''; pwNeu = ''; pwWdh = ''; + } catch { + pwError = 'Altes Passwort falsch oder Fehler beim Ändern.'; + } finally { + pwSaving = false; + } + } + function abmelden() { user.clear(); goto('/login'); @@ -329,6 +357,30 @@
+ +{pwError}
{/if} + {#if pwSuccess}{pwSuccess}
{/if} + +