eretrrefvdsfd / client /src /components /ProtectedRoute.tsx
cnmksjs's picture
Upload 59 files
2c6bb7b verified
raw
history blame contribute delete
768 Bytes
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}</>
}