feat: 重构博客为水墨纸质风格 + 搭建后台管理系统

- 重新设计全站 UI:parchment/ink/terracotta 水墨纸质色系,宋式 serif 排版
- 新增页面:文章列表、文章详情、分类、标签、关于
- GSAP ScrollTrigger 滚动动画 + 逐字揭示效果
- 后台管理系统 /admin:文章/分类/标签 CRUD,JSON 文件存储
- 登录认证(cookie session)
- 设计系统文档 UI.md
This commit is contained in:
胡旭
2026-06-24 08:45:28 +08:00
parent 507f12e501
commit dce8fe62ea
35 changed files with 3124 additions and 96 deletions
+36
View File
@@ -0,0 +1,36 @@
import { NextRequest, NextResponse } from "next/server";
import { cookies } from "next/headers";
const ADMIN_PASSWORD = "asui2026"; // 后续可改环境变量
const SESSION_KEY = "admin_session";
const SESSION_VALUE = "authenticated";
export async function POST(request: NextRequest) {
const body = await request.json();
if (body.password === ADMIN_PASSWORD) {
const cookieStore = await cookies();
cookieStore.set(SESSION_KEY, SESSION_VALUE, {
httpOnly: true,
secure: process.env.NODE_ENV === "production",
sameSite: "lax",
maxAge: 60 * 60 * 24 * 7, // 7 days
path: "/",
});
return NextResponse.json({ ok: true });
}
return NextResponse.json({ error: "密码错误" }, { status: 401 });
}
export async function DELETE() {
const cookieStore = await cookies();
cookieStore.delete(SESSION_KEY);
return NextResponse.json({ ok: true });
}
export async function GET() {
const cookieStore = await cookies();
const session = cookieStore.get(SESSION_KEY);
return NextResponse.json({ authenticated: session?.value === SESSION_VALUE });
}