Files
nextjs-template/components/ProtectedRoute.tsx
2025-07-04 17:57:05 +06:00

28 lines
653 B
TypeScript

"use client";
import { useRouter } from "next/navigation";
import { useEffect } from "react";
import { useAuth } from "@/context/AuthContext";
import LoadingSpinner from "./LoadingSpinner";
export default function ProtectedRoute({
children,
}: {
children: React.ReactNode;
}) {
const { authState } = useAuth();
const router = useRouter();
useEffect(() => {
if (!authState.isLoading && !authState.isAuthenticated) {
router.push("/login");
}
}, [authState.isAuthenticated, authState.isLoading, router]);
if (authState.isLoading) {
return <LoadingSpinner />;
}
return authState.isAuthenticated ? children : null;
}