完善站点运营设置:分路由管理、登录可见评论、邮件模板内联与关闭注册 SSR。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-23 00:17:00 +08:00
parent acde7ee288
commit 6f054a903c
98 changed files with 8239 additions and 2073 deletions

View File

@@ -1,21 +1,28 @@
import type { Metadata } from "next";
import { cookies } from "next/headers";
import { getMeCached, getPublicSettingsCached } from "@/lib/serverData";
import { authCookieHeader } from "@/lib/cookies";
import { isSuperOrOwner } from "@/lib/roles";
import Forbidden from "../Forbidden";
import SettingsAdmin from "./SettingsAdmin";
import { redirect } from "next/navigation";
export const metadata: Metadata = {
title: "站点设置",
};
export default async function AdminSettingsPage() {
const cookie = authCookieHeader(await cookies());
const me = await getMeCached(cookie || undefined);
if (!me.user || !isSuperOrOwner(me.user.role)) {
return <Forbidden text="站点设置仅超级管理员和站长可操作。" />;
}
const settings = await getPublicSettingsCached();
return <SettingsAdmin initial={settings} />;
interface PageProps {
searchParams: Promise<{ section?: string }>;
}
const LEGACY: Record<string, string> = {
basic: "/admin/settings/basic",
content: "/admin/settings/access",
security: "/admin/settings/access",
access: "/admin/settings/access",
mail: "/admin/settings/mail",
storage: "/admin/settings/storage",
filter: "/admin/settings/filter",
maintenance: "/admin/settings/maintenance",
};
/** /admin/settings 与旧 ?section= 统一跳到子路由 */
export default async function SettingsIndexPage({ searchParams }: PageProps) {
const sp = await searchParams;
const raw = typeof sp.section === "string" ? sp.section.trim() : "";
redirect(LEGACY[raw] || "/admin/settings/basic");
}