/** * @ai-summary Auth0 callback handler page - routes users based on their status * @ai-context Fetches user status after Auth0 callback and redirects appropriately */ import React, { useEffect } from 'react'; import { useNavigate, useLocation } from 'react-router-dom'; import { useUserStatus } from '../../../core/auth/useUserStatus'; export const CallbackPage: React.FC = () => { const navigate = useNavigate(); const location = useLocation(); const { data: userStatus, isLoading, error } = useUserStatus(); // Get returnTo from location state (passed from Auth0Provider onRedirectCallback) const returnTo = (location.state as { returnTo?: string })?.returnTo || '/garage'; useEffect(() => { if (isLoading) return; if (error) { console.error('[CallbackPage] Error fetching user status:', error); // On error, redirect to garage and let normal auth flow handle it navigate('/garage', { replace: true }); return; } if (userStatus) { // Note: Unverified users should never reach this page if Auth0 action is configured // But as a safety check, redirect to verify-email if not verified if (!userStatus.emailVerified) { console.log('[CallbackPage] User not verified, redirecting to verify-email'); navigate('/verify-email', { replace: true }); return; } // Check if onboarding is completed if (!userStatus.onboardingCompleted) { console.log('[CallbackPage] User not onboarded, redirecting to onboarding'); navigate('/onboarding', { replace: true }); return; } // User is verified and onboarded - go to requested destination console.log('[CallbackPage] User verified and onboarded, redirecting to:', returnTo); navigate(returnTo, { replace: true }); } }, [userStatus, isLoading, error, navigate, returnTo]); return (

Setting up your session...

Please wait while we prepare your garage.

); }; export default CallbackPage;