import type { NextRequest } from "next/server"; import { SESSION_COOKIE_NAME, getUserFromSessionToken } from "@/lib/auth"; import type { HttpError, UserRecord } from "@/lib/types"; export function getApiCurrentUser(request: NextRequest): UserRecord | null { const sessionToken = request.cookies.get(SESSION_COOKIE_NAME)?.value; return getUserFromSessionToken(sessionToken); } export function requireApiUser(request: NextRequest): UserRecord { const user = getApiCurrentUser(request); if (!user) { const error = new Error("请先登录。") as HttpError; error.statusCode = 401; throw error; } if (!user.isActive) { const error = new Error("当前账号已被禁用。") as HttpError; error.statusCode = 403; throw error; } return user; } export function requireApiAdmin(request: NextRequest): UserRecord { const user = requireApiUser(request); if (user.role !== "admin") { const error = new Error("需要管理员权限。") as HttpError; error.statusCode = 403; throw error; } return user; }