import { useState } from "react"; import { Link, useSearchParams } from "react-router-dom"; import "./page-auth.css"; import { AuthWrapper } from "./AuthWrapper"; import showToast from "../../services/toastService"; import AuthRepository from "../../repositories/AuthRepository"; import { z } from 'zod'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { useNavigate } from "react-router-dom"; import {clearAllCache} from "../../slices/apiDataManager"; const resetPasswordSchema = z.object( { email:z.string().email(), password: z .string() .min(8, 'Password must be at least 8 characters') .regex(/[A-Z]/, 'Password must contain at least one uppercase letter') .regex(/[a-z]/, 'Password must contain at least one lowercase letter') .regex(/\d/, 'Password must contain at least one number') .regex(/[!@#$%^&*()_+{}\[\]:;<>,.?~\\/-]/, 'Password must contain at least one special character'), confirmPassword: z.string().min(8, 'Password must be at least 8 characters'), }) .refine((data) => data.password === data.confirmPassword, { message: 'Passwords do not match', path: ['confirmPassword'], } ); const ResetPasswordPage = () => { const [ searchParams ] = useSearchParams(); const [loading,setLoading] = useState(false) const token = searchParams.get('token'); const navigate = useNavigate() const {register,handleSubmit,formState: { errors }} = useForm({ resolver:zodResolver(resetPasswordSchema) }) const onSubmitResetPassword = async(data) => { try { setLoading(true) const {email, password, confirmPassword} = data; let reqObject = { email, token: token, newPassword: password } let response = await AuthRepository.resetPassword( reqObject ); showToast( "Password Reseted", "success" ) clearAllCache() setLoading(false) navigate("/auth/login",{replace:true}) } catch ( error ) { setLoading(false) showToast("Token is expries or Invalid ","error") } }; return (

Reset Password? 🔒

Enter your email and new password to update.

{errors.email &&
{errors.email.message}
}
{errors.password &&
{errors.password.message}
}
{errors.confirmPassword &&
{errors.confirmPassword.message}
}

Password must be at least 8 characters

Password must contain at least one uppercase letter

Password must contain at least one number

Password must contain at least one special character

Back to login
); }; export default ResetPasswordPage;