import React, { useEffect, useState } from 'react'; import { useNavigate, useSearchParams } from 'react-router-dom'; import { useAuth } from '../../contexts/AuthContext'; import { Box, CircularProgress, Typography, Alert, Button } from '@mui/material'; const LoginCallback: React.FC = () => { const navigate = useNavigate(); const [searchParams] = useSearchParams(); const { login } = useAuth(); const [error, setError] = useState(''); useEffect(() => { const handleCallback = async () => { const code = searchParams.get('code'); const errorParam = searchParams.get('error'); if (errorParam) { setError(`Authentifizierungsfehler: ${errorParam}`); return; } if (!code) { setError('Kein Autorisierungscode erhalten'); return; } try { await login(code); // Redirect to dashboard on success navigate('/dashboard', { replace: true }); } catch (err) { console.error('Login callback error:', err); setError( err instanceof Error ? err.message : 'Anmeldung fehlgeschlagen. Bitte versuchen Sie es erneut.' ); } }; handleCallback(); }, [searchParams, login, navigate]); if (error) { return ( {error} ); } return ( Anmeldung wird abgeschlossen... ); }; export default LoginCallback;