Spaces:
Configuration error
Configuration error
import { ReactNode } from 'react' | |
import { Navigate } from 'react-router-dom' | |
import { useAuthStore } from '@/store/authStore' | |
import LoadingSpinner from './LoadingSpinner' | |
interface ProtectedRouteProps { | |
children: ReactNode | |
requireAdmin?: boolean | |
} | |
export default function ProtectedRoute({ children, requireAdmin = false }: ProtectedRouteProps) { | |
const { user, loading } = useAuthStore() | |
if (loading) { | |
return ( | |
<div className="min-h-screen flex items-center justify-center"> | |
<LoadingSpinner size="lg" /> | |
</div> | |
) | |
} | |
if (!user) { | |
return <Navigate to="/login" replace /> | |
} | |
if (requireAdmin && !user.isAdmin) { | |
return <Navigate to="/chat" replace /> | |
} | |
return <>{children}</> | |
} | |