import type { Metadata } from "next"; import { cookies } from "next/headers"; import { authCookieHeader } from "@/lib/cookies"; import { fetchBoards, type BoardWithCount } from "@/lib/api"; import { getMeCached } from "@/lib/serverData"; import { canModerateAny, isAdminOrAbove } from "@/lib/roles"; import Forbidden from "../Forbidden"; import PinnedAdmin from "./PinnedAdmin"; export const metadata: Metadata = { title: "置顶管理", }; export default async function AdminPinnedPage() { const cookie = authCookieHeader(await cookies()); const me = await getMeCached(cookie || undefined); // 管理员及以上排全站置顶;板块管理员排自己授权板块的板块置顶 if (!me.user || !canModerateAny(me.user)) { return ; } // 板块管理员只能看到自己被授权的板块 let boards: BoardWithCount[] = []; try { const r = await fetchBoards(); boards = r.boards ?? []; } catch { boards = []; } if (!isAdminOrAbove(me.user.role)) { const ids = new Set(me.user.board_ids ?? []); boards = boards.filter((b) => ids.has(b.id)); } return ( ({ id: b.id, name: b.name }))} canGlobal={isAdminOrAbove(me.user.role)} /> ); }