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 ResetPassword = () => {
const [searchParams] = useSearchParams();
const [loading, setLoading] = useState(false);
const [hidepass, setHidepass] = useState(true);
const [hidepass1, setHidepass1] = useState(true);
const [tokenExpired, setTokenExpired] = 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();
navigate("/auth/login", { replace: true });
// setLoading(false);
} catch (error) {
setLoading(false);
if (error?.response?.status === 400) {
showToast("Please check valid Credentials", "error");
} else {
setTokenExpired(true);
}
}
};
if (tokenExpired) {
return (
This link appears to be invalid or expired. Please use the 'Forgot
Password' feature to set your new password.
Invalid Link 🔒
Enter your email and new password to update.