feat: 增加线路优化注册功能
All checks were successful
CI / build (20.15.1) (push) Successful in 21m1s

This commit is contained in:
speakeloudest 2025-12-09 21:53:52 -08:00
parent c6a825c284
commit f86e3b4725
2 changed files with 9 additions and 14 deletions

View File

@ -3,7 +3,7 @@ import EmailAuthForm2 from '@/app/auth/email2/auth-form';
export default function RegisterPage() { export default function RegisterPage() {
return ( return (
<div className='container w-[496px] py-8'> <div className='container w-full py-8 sm:w-[496px]'>
<EmailAuthForm2 isRedirect={true} /> <EmailAuthForm2 isRedirect={true} />
</div> </div>
); );

View File

@ -14,7 +14,6 @@ import {
import { Input } from '@workspace/airo-ui/components/input'; import { Input } from '@workspace/airo-ui/components/input';
import { Icon } from '@workspace/airo-ui/custom-components/icon'; import { Icon } from '@workspace/airo-ui/custom-components/icon';
import { Markdown } from '@workspace/airo-ui/custom-components/markdown'; import { Markdown } from '@workspace/airo-ui/custom-components/markdown';
import { useTranslations } from 'next-intl';
import { useRouter } from 'next/navigation'; import { useRouter } from 'next/navigation';
import { Dispatch, SetStateAction, useEffect, useRef, useState } from 'react'; import { Dispatch, SetStateAction, useEffect, useRef, useState } from 'react';
import { useForm } from 'react-hook-form'; import { useForm } from 'react-hook-form';
@ -35,7 +34,6 @@ export default function RegisterForm({
setInitialValues: Dispatch<SetStateAction<any>>; setInitialValues: Dispatch<SetStateAction<any>>;
onSwitchForm: Dispatch<SetStateAction<'register' | 'reset' | 'login'>>; onSwitchForm: Dispatch<SetStateAction<'register' | 'reset' | 'login'>>;
}) { }) {
const t = useTranslations('auth.register');
const { common } = useGlobalStore(); const { common } = useGlobalStore();
const { verify, auth, invite } = common; const { verify, auth, invite } = common;
const router = useRouter(); const router = useRouter();
@ -53,12 +51,9 @@ export default function RegisterForm({
const formSchema = z const formSchema = z
.object({ .object({
email: z email: z.string().email('请输入有效的电子邮件地址。').refine(handleCheckUser, {
.string() message: '电子邮件域名不在允许的白名单中。',
.email(t('email')) }),
.refine(handleCheckUser, {
message: t('whitelist'),
}),
password: z.string().min(1, '请输入密码'), // 必填提示 password: z.string().min(1, '请输入密码'), // 必填提示
repeat_password: z.string().min(1, '请重复输入密码'), // 必填 repeat_password: z.string().min(1, '请重复输入密码'), // 必填
code: auth.email.enable_verify code: auth.email.enable_verify
@ -74,7 +69,7 @@ export default function RegisterForm({
if (password !== repeat_password) { if (password !== repeat_password) {
ctx.addIssue({ ctx.addIssue({
code: z.ZodIssueCode.custom, code: z.ZodIssueCode.custom,
message: t('passwordMismatch'), message: '两次密码输入不一致',
path: ['repeat_password'], path: ['repeat_password'],
}); });
} }
@ -109,7 +104,7 @@ export default function RegisterForm({
<div className={'h-[84px] text-2xl font-bold leading-[84px]'}>线</div> <div className={'h-[84px] text-2xl font-bold leading-[84px]'}>线</div>
{auth.register.stop_register ? ( {auth.register.stop_register ? (
<Markdown>{t('message')}</Markdown> <Markdown></Markdown>
) : ( ) : (
<Form {...form}> <Form {...form}>
<form onSubmit={handleSubmit}> <form onSubmit={handleSubmit}>
@ -232,7 +227,7 @@ export default function RegisterForm({
</div> </div>
<div className='text-right text-sm'> <div className='text-right text-sm'>
{t('existingAccount')}&nbsp; &nbsp;
<Button <Button
variant='link' variant='link'
type='button' type='button'
@ -241,7 +236,7 @@ export default function RegisterForm({
router.replace('/'); router.replace('/');
}} }}
> >
{t('switchToLogin')}
</Button> </Button>
</div> </div>
<div className='mt-6 flex justify-center'> <div className='mt-6 flex justify-center'>
@ -251,7 +246,7 @@ export default function RegisterForm({
className='h-auto min-w-[157px] py-2 text-lg font-medium' className='h-auto min-w-[157px] py-2 text-lg font-medium'
> >
{loading && <Icon icon='mdi:loading' className='animate-spin' />} {loading && <Icon icon='mdi:loading' className='animate-spin' />}
{t('title')}
</AiroButton> </AiroButton>
</div> </div>
</form> </form>