| 'use client'; |
|
|
| import { useEffect } from 'react'; |
| import { useAuth } from '@/contexts/AuthContext'; |
| import { useRouter } from 'next/navigation'; |
| import { Loader2 } from 'lucide-react'; |
|
|
| export default function ProtectedRoute({ children }: { children: React.ReactNode }) { |
| const { user, loading } = useAuth(); |
| const router = useRouter(); |
|
|
| useEffect(() => { |
| if (!loading && !user) { |
| router.push('/login'); |
| } |
| }, [user, loading, router]); |
|
|
| if (loading) { |
| return ( |
| <div className="flex items-center justify-center min-h-screen"> |
| <Loader2 className="w-8 h-8 animate-spin text-primary-600" /> |
| </div> |
| ); |
| } |
|
|
| if (!user) { |
| return null; |
| } |
|
|
| return <>{children}</>; |
| } |
|
|