Files
IMTIM-Portal/frontend/src/components/protected-route.tsx
T
2026-04-17 16:27:18 +08:00

31 lines
725 B
TypeScript

'use client';
import { useEffect } from 'react';
import { useRouter } from 'next/navigation';
import { useAuthStore } from '@/lib/auth-store';
export default function ProtectedRoute({ children }: { children: React.ReactNode }) {
const { isAuthenticated, initialize } = useAuthStore();
const router = useRouter();
useEffect(() => {
initialize();
}, [initialize]);
useEffect(() => {
if (!isAuthenticated) {
router.push('/login');
}
}, [isAuthenticated, router]);
if (!isAuthenticated) {
return (
<div className="flex items-center justify-center min-h-[200px]">
<div className="text-muted-foreground">...</div>
</div>
);
}
return <>{children}</>;
}