"use client"; import React, { useEffect, useState } from "react"; import Link from "next/link"; import { usePathname, useRouter } from "next/navigation"; import { getClientToken, removeClientToken } from "./_components/AdminComponents"; import { adminVerifyToken } from "../../lib/adminApi"; export default function AdminLayout({ children }: { children: React.ReactNode }) { const pathname = usePathname(); const router = useRouter(); const [isAuthenticated, setIsAuthenticated] = useState(null); useEffect(() => { let isMounted = true; async function checkAuth() { const token = getClientToken(); if (!token) { if (pathname !== "/console/login") { router.push("/console/login"); } else { setIsAuthenticated(false); } return; } const isValid = await adminVerifyToken(token); if (!isMounted) return; if (!isValid) { removeClientToken(); if (pathname !== "/console/login") { router.push("/console/login"); } else { setIsAuthenticated(false); } } else { setIsAuthenticated(true); } } checkAuth(); return () => { isMounted = false; }; }, [pathname, router]); if (pathname === "/console/login") { return
{children}
; } if (isAuthenticated === null) { return (
Checking authentication...
); } const navItems = [ { href: "/console", label: "Dashboard Overview" }, { href: "/console/research-projects", label: "Research Projects" }, { href: "/console/research-areas", label: "Research Areas" }, { href: "/console/members", label: "Members & Alumni" }, { href: "/console/publications", label: "Publications & Patents" }, { href: "/console/lectures", label: "Lectures & Courses" }, { href: "/console/standardization", label: "Standardization" }, ]; const handleLogout = () => { removeClientToken(); router.push("/console/login"); }; return (
{/* Sidebar */} {/* Main Content Area */}
{children}
); }