import React, { useState, useEffect } from 'react'; import { useAuth } from '../context/AuthContext'; import { useNavigate } from 'react-router-dom'; import { AlertTriangle } from 'lucide-react'; const Login = () => { const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(''); const navigate = useNavigate(); const { loginWithO365, isAuthorized, isLoading: authLoading } = useAuth(); const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); // ✅ AJOUT : Redirection automatique si déjà connecté (cas retour OAuth mobile) useEffect(() => { if (isAuthorized && !authLoading) { console.log('✅ Utilisateur autorisé détecté, redirection vers dashboard...'); navigate('/dashboard', { replace: true }); } }, [isAuthorized, authLoading, navigate]); const handleO365Login = async () => { setIsLoading(true); setError(''); try { if (isMobile) { console.log('🔐 Redirection mobile vers Office 365...'); await loginWithO365(); // Ce code ne sera jamais atteint sur mobile car il y a une redirection } else { 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 if (error.errorCode === 'user_cancelled') { setError('Connexion annulée'); } else { setError(error.message || "Erreur lors de la connexion Office 365"); } setIsLoading(false); } }; // ✅ AJOUT : Afficher un loader pendant la vérification de l'auth if (authLoading) { return (

Vérification de la connexion...

); } return (
{/* Image côté gauche */}
{/* Formulaire côté droit */}
{/* Logo */}
GTA Logo

GESTION DES TEMPS ET DES ACTIVITÉS

{/* Bouton Office 365 */}
{/* Message d'information */}

Connectez-vous avec votre compte professionnel ENSUP

{/* 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;