fix(auth): 优化首次用户设置流程和注册表单逻辑

- 新增isSetupMode状态区分首次用户设置模式
- 调整表单提交逻辑和提示信息显示
- 修复首次用户设置后状态未更新的问题
- 优化表单字段显示条件和标签文案
This commit is contained in:
zhang1106
2026-05-08 17:09:10 +08:00
parent a5505207bc
commit 6f2271351d
+16 -23
View File
@@ -33,6 +33,8 @@ const Login = () => {
const { login, register, checkAdmin } = useAuth();
const navigate = useNavigate();
const isSetupMode = isFirstUser && !registerMode;
useEffect(() => {
checkIsFirstUser();
}, []);
@@ -76,10 +78,12 @@ const Login = () => {
realName: values.realName,
});
if (result.success) {
message.success(result.isFirstUser ? '管理员账号创建成功' : '注册成功,请等待管理员审核');
if (result.isFirstUser) {
message.success('管理员账号创建成功');
setIsFirstUser(false);
navigate('/dashboard');
} else {
message.success('注册成功,请等待管理员审核');
setRegisterMode(false);
}
} else {
@@ -242,13 +246,13 @@ const Login = () => {
)}
<Form
name={registerMode ? 'register' : 'login'}
name={isSetupMode || registerMode ? 'register' : 'login'}
layout="vertical"
onFinish={registerMode ? onFinishRegister : onFinishLogin}
onFinish={isSetupMode ? onFinishRegister : (registerMode ? onFinishRegister : onFinishLogin)}
size="large"
className="login-form"
>
{registerMode && (
{registerMode && !isFirstUser && (
<>
<Form.Item
name="realName"
@@ -261,17 +265,6 @@ const Login = () => {
prefix={<UserOutlined className="input-icon" />}
/>
</Form.Item>
<Form.Item
name="username"
label="用户名"
rules={[{ required: true, message: '请输入用户名' }]}
>
<Input
placeholder="请输入用户名"
className="login-input"
prefix={<UserOutlined className="input-icon" />}
/>
</Form.Item>
<Form.Item
name="email"
label="邮箱"
@@ -302,32 +295,32 @@ const Login = () => {
<Form.Item
name="username"
label={isFirstUser ? '管理员账号' : '用户名'}
rules={[{ required: true, message: isFirstUser ? '请设置管理员账号' : '请输入用户名' }]}
label={isSetupMode ? '管理员账号' : (registerMode ? '用户名' : '用户名')}
rules={[{ required: true, message: isSetupMode ? '请设置管理员账号' : '请输入用户名' }]}
>
<Input
prefix={<UserOutlined className="input-icon" />}
placeholder={isFirstUser ? '请设置管理员账号' : '请输入用户名'}
placeholder={isSetupMode ? '请设置管理员账号' : '请输入用户名'}
className="login-input"
/>
</Form.Item>
<Form.Item
name="password"
label={isFirstUser ? '管理员密码' : '密码'}
label={isSetupMode ? '管理员密码' : '密码'}
rules={[
{ required: true, message: isFirstUser ? '请设置管理员密码' : '请输入密码' },
{ required: true, message: isSetupMode ? '请设置管理员密码' : '请输入密码' },
{ min: 6, message: '密码长度不能少于6位' },
]}
>
<Input.Password
prefix={<LockOutlined className="input-icon" />}
placeholder={isFirstUser ? '请设置管理员密码' : '请输入密码'}
placeholder={isSetupMode ? '请设置管理员密码' : '请输入密码'}
className="login-input"
/>
</Form.Item>
{registerMode && (
{(registerMode || isSetupMode) && (
<Form.Item
name="confirmPassword"
label="确认密码"
@@ -359,7 +352,7 @@ const Login = () => {
loading={loading}
className="submit-button"
>
{registerMode ? '立即注册' : '登 录'}
{isSetupMode ? '创建管理员' : (registerMode ? '立即注册' : '登 录')}
</Button>
</Form.Item>
</Form>