import { useState } from 'react' import { Alert, App, Button, Form, Input, Typography } from 'antd' import { LockOutlined } from '@ant-design/icons' import { Navigate, useNavigate } from 'react-router-dom' import { BrandLogo } from '@/components/BrandLogo' import { getAdminBasePath, getAdminLoginPath } from '@/shared/api/adminClient' import { useAdminSessionStore } from '@/stores/adminSession' interface ChangePasswordForm { old_password: string new_password: string confirm_password: string } export function AdminChangePasswordPage() { const { message } = App.useApp() const navigate = useNavigate() const admin = useAdminSessionStore(state => state.admin) const logout = useAdminSessionStore(state => state.logout) const changePassword = useAdminSessionStore(state => state.changePassword) const [submitting, setSubmitting] = useState(false) const [error, setError] = useState('') const basePath = getAdminBasePath() if (!admin) return if (!admin.password_must_change) return const onFinish = async (values: ChangePasswordForm) => { setSubmitting(true) setError('') try { await changePassword(values.old_password, values.new_password) message.success('初始密码已更新') navigate(basePath, { replace: true }) } catch (err) { setError(err instanceof Error ? err.message : '密码没有更新,请检查原密码') } finally { setSubmitting(false) } } return (
FIRST RUN · SECURITY
先把钥匙
换掉。
初始密码只用于第一次进入。修改完成后,这个后台会话才能打开订单、财务和分销操作。
修改初始密码 当前账号:{admin.nickname || admin.username}({admin.username})
{error ? : null} layout="vertical" size="large" requiredMark={false} onFinish={onFinish} > } placeholder="请输入原密码" /> } placeholder="8–20 位新密码" /> ({ validator(_, value) { if (!value || getFieldValue('new_password') === value) { return Promise.resolve() } return Promise.reject(new Error('两次输入的新密码不一致')) }, }), ]} > } placeholder="再次输入新密码" />
改密后旧会话会按后端规则刷新
) }