import DB from "@/app/www/system/DB"; import dayjs from "dayjs"; import { NextRequest } from "next/server"; import { getDatetime } from "taehui-ts/date"; export default function validateTotem( route: ( req: NextRequest, params: { params: Record<string, string> }, ) => Promise<Response>, ) { return async ( req: NextRequest, params: { params: Record<string, string> }, ) => { const totem = req.headers.get("totem"); if (!totem) { return new Response(undefined, { status: 400 }); } const data = await DB.ta(async (db) => { const data = await DB.getAvatarAsTotem(db, totem); if (data) { const datetime = getDatetime(); if (dayjs(data.date).add(1, "hour").isAfter(datetime)) { await DB.setTotemDate(db, totem, datetime); return DB.getAvatarAsAvatarID(db, data.avatarID); } else { await DB.wipeTotem(db, totem); } } }); if (data) { req.headers.set("avatarID", encodeURIComponent(data.avatarID)); req.headers.set("avatarName", encodeURIComponent(data.avatarName)); req.headers.set("level", data.level.toString()); req.headers.set("fax", encodeURIComponent(data.fax)); req.headers.set("avatarIntro", encodeURIComponent(data.avatarIntro)); return route(req, params); } else { return new Response(undefined, { status: 401 }); } }; }