import { Button, Card, Form, Input, Layout, Typography, message } from "antd"; import { LockOutlined, LogoutOutlined } from "@ant-design/icons"; import { useState } from "react"; import { useNavigate } from "react-router-dom"; import { getCurrentUser, updateMyPassword } from "@/api"; const { Title, Text } = Typography; type ResetPasswordFormValues = { oldPassword: string; newPassword: string; confirmPassword: string; }; export default function ResetPassword() { const [loading, setLoading] = useState(false); const navigate = useNavigate(); const [form] = Form.useForm(); const goToLogin = () => { localStorage.removeItem("accessToken"); localStorage.removeItem("refreshToken"); localStorage.removeItem("displayName"); localStorage.removeItem("username"); localStorage.removeItem("availableTenants"); localStorage.removeItem("activeTenantId"); sessionStorage.removeItem("userProfile"); navigate("/login", { replace: true }); }; const onFinish = async (values: ResetPasswordFormValues) => { setLoading(true); try { await updateMyPassword({ oldPassword: values.oldPassword, newPassword: values.newPassword }); const profile = await getCurrentUser(); sessionStorage.setItem("userProfile", JSON.stringify(profile)); window.dispatchEvent(new Event("user-profile-updated")); message.success("密码已更新"); navigate("/", { replace: true }); } finally { setLoading(false); } }; return (
首次登录请修改密码 当前账号需要先更新初始密码,提交成功后会直接进入系统。
} /> } /> ({ validator(_, value) { if (!value || getFieldValue("newPassword") === value) { return Promise.resolve(); } return Promise.reject(new Error("两次输入的新密码不一致")); } }) ]} > } />
); }