需要管理员权限
此区域仅供站点管理员访问,如有疑问请联系站长。
返回首页import type { Metadata } from "next"; import Link from "next/link"; import { cookies, headers } from "next/headers"; import { redirect } from "next/navigation"; import { ShieldAlert } from "lucide-react"; import { authCookieHeader, REFRESH_COOKIE, CSRF_COOKIE, TOKEN_COOKIE } from "@/lib/cookies"; import { getMeCached, getPublicSettingsCached } from "@/lib/serverData"; import { canAccessAdminMessages, hasAnyChannelPerm, isStaff } from "@/lib/roles"; import AdminShell from "@/components/admin/AdminShell"; import AdminSessionRecover from "./AdminSessionRecover"; // 整个 /admin 树不进入索引(子页面无需重复声明) export const metadata: Metadata = { robots: { index: false, follow: false }, }; // 权限以 Go 端为唯一判定;此处仅决定管理界面是否直出。 // 允许:管理角色 / 消息管理/群管权限 / 任一渠道权限(公告/单页/书库/广告)。 export default async function AdminLayout({ children }: { children: React.ReactNode }) { const cookieStore = await cookies(); const cookie = authCookieHeader(cookieStore); const me = await getMeCached(cookie || undefined); const settings = await getPublicSettingsCached(); const theme = cookieStore.get("j13-theme")?.value === "dark" ? "dark" : "light"; const allowed = !!me.user && (isStaff(me.user.role) || canAccessAdminMessages(me.user) || hasAnyChannelPerm(me.user)); if (!allowed || !me.user) { // 已登录但无后台权限:保留提示卡片 if (me.user) { return (
此区域仅供站点管理员访问,如有疑问请联系站长。
返回首页