import React, { useState } from "react"; import { Mail, Lock, AlertCircle } from "lucide-react"; import { useNavigate, Link } from "react-router-dom"; import axios from "axios"; import { useAuth } from "../AuthContext"; import { API_BASE_URL } from "../config"; function Login() { const [formData, setFormData] = useState({ email: "", password: "", }); const [error, setError] = useState(""); const { login } = useAuth(); const navigate = useNavigate(); const handleChange = (e) => { const { name, value } = e.target; setFormData((prev) => ({ ...prev, [name]: value, })); if (error) setError(""); }; const handleSubmit = async (e) => { e.preventDefault(); setError(""); try { const response = await axios.post(`${API_BASE_URL}/login`, formData, { headers: { "Content-Type": "application/json", }, }); const data = response.data; if (data.token) { login(data.token); navigate("/"); } else { setError("Authentification échouée : token manquant dans la réponse"); } } catch (error) { console.error("Erreur lors de la connexion", error); if (error.response) { if (error.response.status === 401) { setError("Email ou mot de passe incorrect"); } else if (error.response.status === 422) { setError("Données de formulaire invalides"); } else if (error.response.status >= 500) { setError("Erreur serveur. Veuillez réessayer plus tard."); } else { setError( error.response.data.message || "Une erreur s'est produite lors de la connexion" ); } } else if (error.request) { setError( "Impossible de joindre le serveur. Vérifiez votre connexion internet." ); } else { setError("Une erreur s'est produite. Veuillez réessayer."); } } }; return (