import React, { useEffect, useState } from "react"; import { Container, Col, Row } from "react-bootstrap"; import { FcGoogle } from "react-icons/fc"; import axios from "axios"; import md5 from "md5"; import { ToastContainer, toast } from "react-toastify"; import "react-toastify/dist/ReactToastify.css"; function AuthPage() { const [formData, setFormData] = useState({ username: "", email: "", password: "", }); const [signin, setSignin] = useState(false); const notifyError = (message) => { toast.error(message); }; function ToggleSign(event) { event.preventDefault(); setSignin(!signin); setFormData({ username: "", email: "", password: "", }); } function handleInputChange(event) { const { name, value } = event.target; setFormData((prevData) => ({ ...prevData, [name]: value, })); } async function handleSubmit(event) { event.preventDefault(); if (!formData.username.trim() && signin) { notifyError("Username cannot be empty"); return; } const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; if (!emailRegex.test(formData.email)) { notifyError("Enter a valid email address"); return; } // Check password length if (formData.password.length < 8) { notifyError("Password must be at least 8 characters long"); return; } try { const response = await axios.post( `http://localhost:8080/api/${!signin ? "login" : "register"}`, formData, { withCredentials: true } ); if (response.status === 200) { const { user } = response.data; delete user.password; const gravatarUrl = `https://www.gravatar.com/avatar/${md5( user.email )}?d=identicon`; user.profilePicture = gravatarUrl; localStorage.setItem("user", JSON.stringify(user)); window.location.href = "/Welcome"; } } catch (error) { console.error("Authentication error:", error); notifyError(error.response?.data.message || "An error occurred"); } } const handleGoogleLogin = (event) => { event.preventDefault(); window.location.href = "http://localhost:8080/auth/google"; }; return ( <>
{signin ? (
Already Have an Account?
) : (
Don't have an account? Create one
)}
); } function TogglerContainer(props) { return ( <>

Welcome to Appointment to Examiner

Already Have an Account?

Welcome to Appointment to Examiner

Don't have an account? Create one

); } function SignUpForm(props) { return ( <>

Create Account

or use your email for registration
); } function SignInForm(props) { return ( <>

Sign In

or use your email password Forget Your Password?
); } export default AuthPage;