import React, { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; import { useGoogleLogin } from "@react-oauth/google"; import { useCallback } from "react"; import Particles from "react-tsparticles"; import { loadFull } from "tsparticles"; import refreshAccessToken from "./refreshAcesstoken"; import axiosapi from "../../api/AuthenticationApi"; import { useAuth } from "../../hooks/authentication/IsAuthenticated"; function LoginPage() { const Navigate = useNavigate(); const { isAuthenticated, setIsAuthenticated } = useAuth(); useEffect(() => { if (!refreshAccessToken()) { Navigate("/"); } }, []); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const handleEmailChange = (event) => { setEmail(event.target.value); }; const handlePasswordChange = (event) => { setPassword(event.target.value); }; const handleSubmit = (event) => { event.preventDefault(); // Send a POST request to the authentication API axiosapi .apiUserLogin({ email: email, password: password, }) .then((res) => { // On successful login, store tokens and set the authorization header localStorage.setItem("access_token", res.data.access); localStorage.setItem("refresh_token", res.data.refresh); axiosapi.axiosInstance.defaults.headers["Authorization"] = "Bearer " + res.data.access; setIsAuthenticated(true); Navigate("/"); }) .catch((err) => { console.log("Login failed"); console.log(err); setIsAuthenticated(false); }); }; const googleLoginImplicit = useGoogleLogin({ flow: "auth-code", redirect_uri: "postmessage", onSuccess: async (response) => { try { const loginResponse = await axiosapi.googleLogin(response.code); if (loginResponse && loginResponse.data) { const { access_token, refresh_token } = loginResponse.data; localStorage.setItem("access_token", access_token); localStorage.setItem("refresh_token", refresh_token); setIsAuthenticated(true); Navigate("/"); } } catch (error) { console.error("Error with the POST request:", error); setIsAuthenticated(false); } }, onError: (errorResponse) => console.log(errorResponse), }); const particlesInit = useCallback(async (engine) => { console.log(engine); await loadFull(engine); }, []); const particlesLoaded = useCallback(async (container) => { console.log(container); }, []); return (
{/* Particles Container */}
{/* Login Box */}

Login

{/* Email Input */}
{/* Password Input */}
{/* Login Button */}
OR
{/* Login with Google Button */} {/* Forgot Password Link */}
Forgot your password?
); } export default LoginPage;