import React, {useContext, useState} from "react"; import FlexibleForm from "../components/FlexibleForm"; import benefitTwoImg from "../assets/img/benefit-two.png"; import { AuthContext } from '../providers/AuthContext'; import {useNavigate} from "react-router-dom"; const Login = () => { const navigate = useNavigate(); const { login } = useContext(AuthContext); const [formData, setFormData] = useState({ email: "", password: "", }); const handleChange = (e) => { const { name, value } = e.target; setFormData((prevData) => ({ ...prevData, [name]: value, })); }; const handleSubmit = async (event) => { event.preventDefault(); const { email, password } = formData; const basicAuth = btoa(`${email}:${password}`) try { const response = await fetch(process.env.REACT_APP_LOGIN_ROUTE, { method: "GET", headers: { 'Content-Type': 'application/json', 'Authorization': `Basic ${basicAuth}`, }, }); if (response.ok) { const jwt = await response.text(); const tokenParts = jwt.split(".") const decodedPayload = atob(tokenParts[1]); const payload = JSON.parse(decodedPayload); const userId = payload.sub; const userDetailsResponse = await fetch(process.env.REACT_APP_REGISTER_ROUTE + '/' + userId , { method: "GET", }); if (userDetailsResponse.ok) { const userDetails = await userDetailsResponse.json(); login(userDetails, jwt); navigate("/") } else { console.error("Failed to fetch details") } } else { console.error("Login failed") } } catch (error) { console.error('Error submitting form:', error); } } return ( <> ); }; export default Login;