input slug
This commit is contained in:
+3
-1
@@ -38,7 +38,9 @@
|
|||||||
"enter_password_step3": "رمز عبور را وارد کنید",
|
"enter_password_step3": "رمز عبور را وارد کنید",
|
||||||
"enter_your_password": "رمز عبور خود را وارد کنید.",
|
"enter_your_password": "رمز عبور خود را وارد کنید.",
|
||||||
"forgot_password": "فراموشی رمز عبور",
|
"forgot_password": "فراموشی رمز عبور",
|
||||||
"login_with_otp": "ورود با رمز عبور یکبار مصرف"
|
"login_with_otp": "ورود با رمز عبور یکبار مصرف",
|
||||||
|
"slug": "نام کاربری",
|
||||||
|
"enter_slug": "نام کاربری خود را وارد کنید"
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"required": "این فیلد اجباری می باشد",
|
"required": "این فیلد اجباری می باشد",
|
||||||
|
|||||||
@@ -9,30 +9,33 @@ import Button from '../../../components/Button'
|
|||||||
import { useLoginWithOtp } from '../hooks/useAuthData'
|
import { useLoginWithOtp } from '../hooks/useAuthData'
|
||||||
import { toast } from 'react-toastify'
|
import { toast } from 'react-toastify'
|
||||||
import { type ErrorType } from '../../../helpers/types'
|
import { type ErrorType } from '../../../helpers/types'
|
||||||
import { useParams } from 'react-router-dom'
|
|
||||||
|
|
||||||
type LoginStep1FormType = {
|
type LoginStep1FormType = {
|
||||||
phone: string;
|
phone: string;
|
||||||
|
slug: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const LoginStep1: FC = () => {
|
const LoginStep1: FC = () => {
|
||||||
|
|
||||||
const { t } = useTranslation('global')
|
const { t } = useTranslation('global')
|
||||||
const { setPhone, phone, setStepLogin } = useAuthStore()
|
const { setPhone, phone, setStepLogin, setSlug } = useAuthStore()
|
||||||
const loginWithOtp = useLoginWithOtp()
|
const loginWithOtp = useLoginWithOtp()
|
||||||
const { slug } = useParams()
|
|
||||||
|
|
||||||
const formik = useFormik<LoginStep1FormType>({
|
const formik = useFormik<LoginStep1FormType>({
|
||||||
initialValues: {
|
initialValues: {
|
||||||
phone: phone,
|
phone: phone,
|
||||||
|
slug: ''
|
||||||
},
|
},
|
||||||
validationSchema: Yup.object({
|
validationSchema: Yup.object({
|
||||||
phone: Yup.string()
|
phone: Yup.string()
|
||||||
|
.required(t('errors.required')),
|
||||||
|
slug: Yup.string()
|
||||||
.required(t('errors.required'))
|
.required(t('errors.required'))
|
||||||
}),
|
}),
|
||||||
onSubmit(values) {
|
onSubmit(values) {
|
||||||
setPhone(values.phone)
|
setPhone(values.phone)
|
||||||
loginWithOtp.mutate({ phone: values.phone, slug: slug as string }, {
|
setSlug(values.slug)
|
||||||
|
loginWithOtp.mutate(values, {
|
||||||
onSuccess() {
|
onSuccess() {
|
||||||
setStepLogin(2)
|
setStepLogin(2)
|
||||||
toast.success(t('auth.otp_sent'))
|
toast.success(t('auth.otp_sent'))
|
||||||
@@ -75,6 +78,26 @@ const LoginStep1: FC = () => {
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div className='mt-4'>
|
||||||
|
<Input
|
||||||
|
label={t('auth.slug')}
|
||||||
|
placeholder={t('auth.enter_slug')}
|
||||||
|
type='text'
|
||||||
|
className='text-right'
|
||||||
|
name='slug'
|
||||||
|
onChange={formik.handleChange}
|
||||||
|
value={formik.values.slug}
|
||||||
|
/>
|
||||||
|
|
||||||
|
{
|
||||||
|
formik.touched.slug && formik.errors.slug &&
|
||||||
|
<Error
|
||||||
|
errorText={formik.errors.slug}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
label={t('auth.next')}
|
label={t('auth.next')}
|
||||||
|
|||||||
@@ -12,15 +12,13 @@ import { useOtpVerify } from '../hooks/useAuthData'
|
|||||||
import { type ErrorType } from '../../../helpers/types'
|
import { type ErrorType } from '../../../helpers/types'
|
||||||
import { toast } from 'react-toastify'
|
import { toast } from 'react-toastify'
|
||||||
import { setToken, setRefreshToken } from '../../../config/func'
|
import { setToken, setRefreshToken } from '../../../config/func'
|
||||||
import { useParams } from 'react-router-dom'
|
|
||||||
|
|
||||||
const LoginStep2: FC = () => {
|
const LoginStep2: FC = () => {
|
||||||
|
|
||||||
const { t } = useTranslation('global')
|
const { t } = useTranslation('global')
|
||||||
const { phone, setStepLogin } = useAuthStore()
|
const { phone, setStepLogin, slug } = useAuthStore()
|
||||||
const { value } = useCountDown(2, true)
|
const { value } = useCountDown(2, true)
|
||||||
const otpVerify = useOtpVerify()
|
const otpVerify = useOtpVerify()
|
||||||
const { slug } = useParams()
|
|
||||||
|
|
||||||
const formik = useFormik<{ otp: string }>({
|
const formik = useFormik<{ otp: string }>({
|
||||||
initialValues: {
|
initialValues: {
|
||||||
@@ -34,7 +32,7 @@ const LoginStep2: FC = () => {
|
|||||||
const params: OtpVerifyType = {
|
const params: OtpVerifyType = {
|
||||||
phone: phone,
|
phone: phone,
|
||||||
otp: values.otp,
|
otp: values.otp,
|
||||||
slug: slug as string
|
slug: slug
|
||||||
}
|
}
|
||||||
otpVerify.mutate(params, {
|
otpVerify.mutate(params, {
|
||||||
onSuccess(data) {
|
onSuccess(data) {
|
||||||
|
|||||||
@@ -3,6 +3,10 @@ import { type AuthStoreType } from "../../auth/types/AuthTypes";
|
|||||||
|
|
||||||
export const useAuthStore = create<AuthStoreType>((set) => ({
|
export const useAuthStore = create<AuthStoreType>((set) => ({
|
||||||
phone: "",
|
phone: "",
|
||||||
|
slug: "",
|
||||||
|
setSlug(value) {
|
||||||
|
set({ slug: value });
|
||||||
|
},
|
||||||
setPhone(value) {
|
setPhone(value) {
|
||||||
set({ phone: value });
|
set({ phone: value });
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ export type LoginPasswordType = {
|
|||||||
|
|
||||||
export type AuthStoreType = {
|
export type AuthStoreType = {
|
||||||
phone: string;
|
phone: string;
|
||||||
|
slug: string;
|
||||||
|
setSlug: (value: string) => void;
|
||||||
setPhone: (value: string) => void;
|
setPhone: (value: string) => void;
|
||||||
email: string;
|
email: string;
|
||||||
setEmail: (value: string) => void;
|
setEmail: (value: string) => void;
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@ import Login from '../pages/auth/Login'
|
|||||||
const Auth: FC = () => {
|
const Auth: FC = () => {
|
||||||
return (
|
return (
|
||||||
<Routes>
|
<Routes>
|
||||||
<Route path={Pages.auth.login + '/:slug'} element={<Login />} />
|
<Route path={Pages.auth.login} element={<Login />} />
|
||||||
</Routes>
|
</Routes>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user