import type { FastifyRequest } from "fastify"; import { env } from "./env.js"; export function requireAdmin(req: FastifyRequest) { // If ADMIN_TOKEN isn't set, run in "open" mode (dev). if (!env.ADMIN_TOKEN) return; const auth = req.headers.authorization; if (!auth?.startsWith("Bearer ")) { const err = new Error("missing bearer token"); // @ts-expect-error attach status err.statusCode = 401; throw err; } const token = auth.slice("Bearer ".length); if (token !== env.ADMIN_TOKEN) { const err = new Error("invalid bearer token"); // @ts-expect-error attach status err.statusCode = 403; throw err; } }