import { useState } from "react"; import { FormActions } from "../employees/EmployeeForm"; import { useAuth } from "../../app/AuthContext"; import ModalPortal from "../../components/ui/ModalPortal"; const PIN_VALIDITY_OPTIONS = [1, 3, 7, 14]; const DEFAULT_PIN_VALIDITY_DAYS = 7; function errorMessage(result) { if (result.status === 403) { return "Keine Berechtigung, Passwörter zurückzusetzen."; } if (result.status === 404) { return "Nutzer nicht gefunden."; } if (result.status === 400) { return typeof result.data === "string" ? result.data : "Eingaben prüfen."; } return "Passwort konnte nicht zurückgesetzt werden."; } export default function ResetUserPasswordDialog({ user, onClose, onDone }) { const { passwordMinLength } = useAuth(); const [mode, setMode] = useState("Invite"); const [pinValidityDays, setPinValidityDays] = useState(DEFAULT_PIN_VALIDITY_DAYS); const [initialPassword, setInitialPassword] = useState(""); const [isSaving, setIsSaving] = useState(false); const [error, setError] = useState(null); async function handleSubmit(event) { event.preventDefault(); if (mode === "Direct" && initialPassword.trim().length < passwordMinLength) { setError(`Initiales Passwort muss mindestens ${passwordMinLength} Zeichen lang sein.`); return; } setIsSaving(true); setError(null); const result = await window.omsorg.users.resetPassword(user.id, { mode, initialPassword: mode === "Direct" ? initialPassword : null, pinValidityDays: mode === "Invite" ? pinValidityDays : null, }); setIsSaving(false); if (!result.ok) { setError(errorMessage(result)); return; } onDone(); } return (

Passwort für {user.username} zurücksetzen

Zugang
{mode === "Invite" && ( )} {mode === "Direct" && ( )} {error &&

{error}

}
); }