'use client'; import { useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; import AdminSidebar from '@/components/admin/AdminSidebar'; import { isAdmin, getCurrentUser } from '@/lib/auth'; export default function AdminLayout({ children }: { children: React.ReactNode }) { const router = useRouter(); const [isAuthorized, setIsAuthorized] = useState(false); const [user, setUser] = useState(null); useEffect(() => { // 权限检查 const token = localStorage.getItem('rsid'); if (!token) { router.push('/login'); return; } if (!isAdmin()) { alert("您没有权限访问管理后台"); router.push('/dashboard'); return; } setIsAuthorized(true); setUser(getCurrentUser()); }, [router]); if (!isAuthorized) return null; return (
{/* 侧边栏组件 - 内部自包含移动端 Header 和开关逻辑 - 不需要传递 isOpen / onClose */} {/* 主内容区域 - flex-1: 占满剩余空间 - pt-16: 移动端顶部留出 64px 给 Sidebar 的固定 Header - md:pt-0: 桌面端不需要留白(左右布局) - h-screen: 限制高度以便内部滚动 (可选,视需求而定) */}
{/* Desktop Header (右侧顶部栏) - 显示页面标题和用户信息 - 移动端如果觉得太挤可以隐藏 (hidden md:flex),或者保留 */}

管理控制台

{user?.nickname || 'Administrator'}
{user?.email}
AD
{/* 页面内容滚动区 */}
{children}
); }