- 新增管理端板块管理页面与后端接口(admin_board) - 新增旧版数据导入:legacyimport 服务、导入面板、importusers 命令行工具 - 聊天用户卡片、板块图标等 UI 组件与界面优化 - 补充 about/公告/1Panel 部署等文档 - gitignore 排除 dist/ 构建产物与 .agents/ 本地工具目录
34 lines
1.0 KiB
TypeScript
34 lines
1.0 KiB
TypeScript
import type { Metadata } from "next";
|
|
import { cookies } from "next/headers";
|
|
import { authCookieHeader } from "@/lib/cookies";
|
|
import { fetchAdminBoards, type AdminBoard } from "@/lib/api";
|
|
import { getMeCached } from "@/lib/serverData";
|
|
import { isOwner } from "@/lib/roles";
|
|
import Forbidden from "../Forbidden";
|
|
import BoardsAdmin from "./BoardsAdmin";
|
|
|
|
export const metadata: Metadata = {
|
|
title: "板块管理",
|
|
};
|
|
|
|
export default async function AdminBoardsPage() {
|
|
const cookie = authCookieHeader(await cookies());
|
|
const me = await getMeCached(cookie || undefined);
|
|
|
|
// 仅站长可管理板块
|
|
if (!me.user || !isOwner(me.user.role)) {
|
|
return <Forbidden text="板块管理仅站长可操作。" />;
|
|
}
|
|
|
|
let initial: AdminBoard[] | null = null;
|
|
let initError = "";
|
|
try {
|
|
const r = await fetchAdminBoards(cookie || undefined);
|
|
initial = r.boards ?? [];
|
|
} catch (e) {
|
|
initError = e instanceof Error ? e.message : "获取板块列表失败";
|
|
}
|
|
|
|
return <BoardsAdmin initial={initial} initError={initError} />;
|
|
}
|