import React, { useState } from 'react'; import { useAuth } from '../context/AuthContext'; import { useNavigate } from 'react-router-dom'; import { Building2, AlertTriangle } from 'lucide-react'; const Login = () => { const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [showPassword, setShowPassword] = useState(false); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(''); const [authMethod, setAuthMethod] = useState(''); const navigate = useNavigate(); const { login, loginWithO365 } = useAuth(); const handleSubmit = async (e) => { e.preventDefault(); setIsLoading(true); setError(''); setAuthMethod('local'); try { const success = await login(email, password); if (success) { navigate('/dashboard'); } else { setError('Identifiants incorrects. Veuillez réessayer.'); } } catch (error) { setError(error.message || 'Erreur lors de la connexion'); } setIsLoading(false); }; const handleO365Login = async () => { setIsLoading(true); setError(''); setAuthMethod('o365'); try { const success = await loginWithO365(); if (!success) { setError("Erreur lors de la connexion Office 365"); setIsLoading(false); return; } navigate('/dashboard'); } catch (error) { console.error('Erreur O365:', error); if (error.message?.includes('non autorisé') || error.message?.includes('Accès refusé')) { setError('Accès refusé : Vous devez être membre d\'un groupe autorisé dans votre organisation.'); } else if (error.message?.includes('AADSTS')) { setError('Erreur d\'authentification Azure AD. Contactez votre administrateur.'); } else { setError(error.message || "Erreur lors de la connexion Office 365"); } } setIsLoading(false); }; return (
{/* Image côté gauche */}
{/* Formulaire côté droit */}
{/* Logo */}
GTA Logo

GESTION DES TEMPS ET DES ACTIVITÉS

{/* Bouton Office 365 */}
{/* Séparateur */}
ou connexion locale
{/* Formulaire local email/mot de passe */}
setEmail(e.target.value)} required className="w-full px-3 py-2 border rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500" placeholder="prenom.nom@ensup.fr" />
setPassword(e.target.value)} required className="w-full px-3 py-2 border rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 pr-10" placeholder="••••••••" />
{/* Message d'erreur */} {error && (

{error.includes('Accès refusé') ? 'Accès refusé' : 'Erreur de connexion'}

{error}

{error.includes('groupe autorisé') && (

Contactez votre administrateur pour être ajouté aux groupes appropriés.

)}
)}
); }; export default Login;