import type { Metadata } from "next"; import { cookies } from "next/headers"; import { authCookieHeader } from "@/lib/cookies"; import { fetchAdminPendingPosts, type Post } from "@/lib/api"; import { getMeCached, getPublicSettingsCached } from "@/lib/serverData"; import { canModerateAny, isSuperOrOwner } from "@/lib/roles"; import Forbidden from "../Forbidden"; import ModerationAdmin from "./ModerationAdmin"; export const metadata: Metadata = { title: "内容审核", }; // 鉴权由 app/admin/layout.tsx 统一承担(RequireStaff + 板块隔离由后端兜底); // 帖子待审队列首屏 SSR 直出,评论队列由客户端进入时拉取 export default async function ModerationPage() { const cookie = authCookieHeader(await cookies()); const me = await getMeCached(cookie || undefined); // 板块管理员及以上且(对板块管理员)拥有授权板块 if (!me.user || !canModerateAny(me.user)) { return ; } let initialPosts: Post[] = []; let initialTotal = 0; let initError = ""; try { const res = await fetchAdminPendingPosts(1, cookie || undefined); initialPosts = res.posts; initialTotal = res.total; } catch (e) { initError = e instanceof Error ? e.message : "获取待审核内容失败"; } const canConfigureSettings = isSuperOrOwner(me.user.role); const settings = await getPublicSettingsCached(); return ( ); }