import Alert from "@mui/material/Alert"; import Box from "@mui/material/Box"; import Button from "@mui/material/Button"; import Card from "@mui/material/Card"; import CardContent from "@mui/material/CardContent"; import Stack from "@mui/material/Stack"; import TextField from "@mui/material/TextField"; import Typography from "@mui/material/Typography"; import { useState } from "react"; import { useNavigate } from "react-router-dom"; import { AppIdentity } from "@/shared/ui/AppIdentity.jsx"; import { useExternalAuth } from "../auth/ExternalAuthProvider.jsx"; import { useExternalI18n } from "../i18n/ExternalI18nProvider.jsx"; import { LanguageSwitcher } from "../i18n/LanguageSwitcher.jsx"; import { translateExternalError } from "../i18n/errors.js"; import { useExternalSessionBrand } from "../shared/useExternalSessionBrand.js"; export default function ChangePasswordPage() { const { changePassword, logout, session } = useExternalAuth(); const { t } = useExternalI18n(); const [form, setForm] = useState({ confirmPassword: "", newPassword: "", oldPassword: "" }); const [error, setError] = useState(""); const [submitting, setSubmitting] = useState(false); const navigate = useNavigate(); useExternalSessionBrand(session, t("app.title")); const submit = async (event) => { event.preventDefault(); if (!form.newPassword.trim()) { setError(t("auth.passwordWhitespace")); return; } if (form.newPassword.length < 8) { setError(t("auth.passwordMinError")); return; } if (form.newPassword !== form.confirmPassword) { setError(t("auth.passwordMismatch")); return; } setSubmitting(true); setError(""); try { await changePassword({ newPassword: form.newPassword, oldPassword: form.oldPassword }); navigate("/overview", { replace: true }); } catch (requestError) { setError(translateExternalError(requestError, t, "auth.passwordChangedFailed")); } finally { setSubmitting(false); } }; const cancel = async () => { await logout(); navigate("/login", { replace: true }); }; return ( {t("auth.changePassword")} {session?.passwordChangeRequired ? t("auth.firstLoginChange") : session?.account} {error ? {error} : null} setForm({ ...form, oldPassword: event.target.value })} /> setForm({ ...form, newPassword: event.target.value })} /> setForm({ ...form, confirmPassword: event.target.value })} /> ); }