import ActionLink from '@/components/shared/ActionLink' import PasswordInput from '@/components/shared/PasswordInput' import Alert from '@/components/ui/Alert' import Button from '@/components/ui/Button' import { FormContainer, FormItem } from '@/components/ui/Form' import Input from '@/components/ui/Input' import { ROUTES_ENUM } from '@/routes/route.constant' import useAuth from '@/utils/hooks/useAuth' import useTimeOutMessage from '@/utils/hooks/useTimeOutMessage' import Captcha from '@/components/shared/Captcha' import { Field, Form, Formik } from 'formik' import { useState } from 'react' import * as Yup from 'yup' import { useLocalization } from '@/utils/hooks/useLocalization' type SignUpFormSchema = { password: string email: string name: string surname: string captchaResponse: string } const validationSchema = Yup.object().shape({ email: Yup.string().email().required(), password: Yup.string().required(), confirmPassword: Yup.string().oneOf([Yup.ref('password')], 'Your passwords do not match'), name: Yup.string().required(), surname: Yup.string().required(), }) const Register = () => { const disableSubmit = false const signInUrl = ROUTES_ENUM.public.login const { signUp } = useAuth() const { translate } = useLocalization() const [message, setMessage] = useState('') const [error, setError] = useTimeOutMessage(10000) const onSignUp = async ( values: SignUpFormSchema, setSubmitting: (isSubmitting: boolean) => void, ) => { setSubmitting(true) const result = await signUp(values) if (result?.status === 'failed') { setError(result.message) setMessage('') } else { setMessage(translate('::Abp.Account.Register.ResultMessage')) window.scrollTo({ top: 0, left: 0, behavior: 'smooth' }) setError('') } setSubmitting(false) } return ( <>

{translate('::Abp.Account.Register.Title')}

{translate('::Abp.Account.Register.Message')}

{message && ( {message} )} {error && ( {error} )} { if (!disableSubmit) { onSignUp(values, setSubmitting) } else { setSubmitting(false) } }} > {({ touched, errors, isSubmitting, setFieldValue }) => (
setFieldValue('captchaResponse', '')} onExpire={() => setFieldValue('captchaResponse', '')} onSuccess={(token) => setFieldValue('captchaResponse', token)} />
{translate('::Abp.Account.Register.AlreadyHaveAnAccount')} {translate('::Abp.Account.SignIn')}
)}
) } export default Register