import type { Metadata } from "next"; import Link from "next/link"; import { cookies } from "next/headers"; import { ShieldAlert } from "lucide-react"; import { authCookieHeader } from "@/lib/cookies"; import { getMeCached } from "@/lib/serverData"; import { AdminSidebar, AdminNavMobile } from "./AdminNav"; // 整个 /admin 树不进入索引(子页面无需重复声明) export const metadata: Metadata = { robots: { index: false, follow: false }, }; // 权限以 Go 端 RequireAdmin 为唯一判定;这里仅决定管理界面是否直出, // 非管理员访问任意 /admin/* 时 SSR 统一给出无权限提示(所有写接口仍由后端 403 兜底)。 export default async function AdminLayout({ children }: { children: React.ReactNode }) { const cookie = authCookieHeader(await cookies()); const me = await getMeCached(cookie || undefined); if (me.user?.role !== "admin") { return (
此区域仅供站点管理员访问,如有疑问请联系站长。
返回首页