'use client'; import { useSession, signOut } from 'next-auth/react'; import Link from 'next/link'; import { usePathname, useRouter } from 'next/navigation'; import { FileText, Settings, Users, LayoutDashboard, LogOut, Menu, X, Activity } from 'lucide-react'; import { useState, useEffect } from 'react'; const navigation = [ { name: '仪表盘', href: '/admin', icon: LayoutDashboard }, { name: '内容管理', href: '/admin/content', icon: FileText }, { name: '配置中心', href: '/admin/settings', icon: Settings }, { name: '用户管理', href: '/admin/users', icon: Users }, { name: '审计日志', href: '/admin/logs', icon: Activity }, ]; export default function AdminLayout({ children, }: { children: React.ReactNode; }) { const { data: session, status } = useSession(); const pathname = usePathname(); const router = useRouter(); const [sidebarOpen, setSidebarOpen] = useState(false); const [mounted, setMounted] = useState(false); const isLoginPage = pathname === '/admin/login'; useEffect(() => { setMounted(true); }, []); useEffect(() => { if (mounted && status === 'unauthenticated' && !isLoginPage) { router.push('/admin/login'); } }, [mounted, status, isLoginPage, router]); if (!mounted) { return null; } if (isLoginPage) { return
{children}
; } if (status === 'loading') { return null; } if (status === 'unauthenticated') { return null; } return (
睿新致遠 后台管理
{sidebarOpen && (
setSidebarOpen(false)} /> )}
{children}
); }