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