import { Router } from "express"; import { requireAdmin } from "../middlewares/auth.js"; import { generateKey, listKeys, revokeKey } from "../lib/apiKeys.js"; const router = Router(); router.post("/keys", requireAdmin, (req, res) => { const { name } = req.body as { name?: string }; if (!name || typeof name !== "string" || !name.trim()) { res.status(400).json({ error: "The 'name' field is required." }); return; } const key = generateKey(name.trim()); res.status(201).json({ message: "API key generated. Save it now — it won't be shown again.", key: key.key, name: key.name, createdAt: key.createdAt, }); }); router.get("/keys", requireAdmin, (_req, res) => { res.json({ keys: listKeys() }); }); router.delete("/keys/:name", requireAdmin, (req, res) => { const { name } = req.params; const ok = revokeKey(name!); if (!ok) { res.status(404).json({ error: "Key not found or already revoked." }); return; } res.json({ message: `Key '${name}' revoked.` }); }); export default router;