"use client"; import { useState } from "react"; import { EINGABE_KLASSE, Feld } from "@/components/formular"; import { Karte } from "@/components/karte"; import { Knopf } from "@/components/knopf"; import { Status } from "@/components/status"; import { apiAufruf, ApiFehler } from "@/lib/api-client"; /** Eigenes Passwort ändern. Andere Sitzungen (andere Geräte) enden, diese bleibt angemeldet. */ export function PasswortAendern() { const [werte, setWerte] = useState({ alt: "", neu: "", wiederholt: "" }); const [meldung, setMeldung] = useState<{ art: "erledigt" | "fehler"; text: string; felder?: Record; } | null>(null); const abweichend = werte.wiederholt !== "" && werte.neu !== werte.wiederholt; async function speichern(ereignis: React.FormEvent) { ereignis.preventDefault(); try { await apiAufruf("POST", "/api/v1/ich/passwort", { alt: werte.alt, neu: werte.neu }); setWerte({ alt: "", neu: "", wiederholt: "" }); setMeldung({ art: "erledigt", text: "Passwort geändert. Andere Sitzungen sind beendet." }); } catch (fehler) { setMeldung({ art: "fehler", text: fehler instanceof ApiFehler ? fehler.message : "Fehler.", felder: fehler instanceof ApiFehler ? fehler.felder : undefined, }); } } return (
void speichern(e)} className="flex flex-col gap-4">
setWerte({ ...werte, alt: e.target.value })} /> setWerte({ ...werte, neu: e.target.value })} /> setWerte({ ...werte, wiederholt: e.target.value })} />
Passwort ändern
{meldung ? {meldung.text} : null}
); }