"use client"; import Link from "next/link"; import { useActionState, useState } from "react"; import { passwortAendern, type WechselZustand } from "@/actions/passwort"; import { Button } from "@/components/ui/Button"; import { CONTROL_CLASS, Field } from "@/components/ui/Field"; import { PASSWORT_REGELN, passwortBeanstandung } from "@/lib/passwort"; // Das eigene Passwort wechseln. // // Die Regeln stehen schon beim Tippen da, statt erst nach dem Absenden — beim // erzwungenen Wechsel ist das der erste Bildschirm, den jemand in dieser // Anwendung sieht, und dreimal abgewiesen zu werden ist ein schlechter Anfang. // Abgewiesen oder angenommen wird trotzdem in der Datenbank; hier steht nur // eine Vorabanzeige (lib/passwort.ts). const START: WechselZustand = { fehler: null }; export function PasswortAendernFormular({ erzwungen }: { erzwungen: boolean }) { const [zustand, aktion, laeuft] = useActionState(passwortAendern, START); const [neues, setNeues] = useState(""); const [wiederholung, setWiederholung] = useState(""); // Erst beanstanden, wenn etwas dasteht: ein leeres Feld ist noch kein Fehler. const beanstandung = neues ? passwortBeanstandung(neues) : null; const passtNichtZusammen = wiederholung.length > 0 && neues !== wiederholung; return (
); }