fix(auth): 优化首次用户设置流程和注册表单逻辑
- 新增isSetupMode状态区分首次用户设置模式 - 调整表单提交逻辑和提示信息显示 - 修复首次用户设置后状态未更新的问题 - 优化表单字段显示条件和标签文案
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user