Spaces:
Sleeping
Sleeping
| ; | |
| /** Phase 6 — owner-only audit log endpoint. */ | |
| Object.defineProperty(exports, "__esModule", { value: true }); | |
| exports.listAuditHandler = listAuditHandler; | |
| const drive_1 = require("../services/drive"); | |
| const auditStore_1 = require("../services/auditStore"); | |
| async function userByToken(token) { | |
| if (!token) | |
| return null; | |
| return (await (0, drive_1.getAllUsers)()).find(u => u.token === token) ?? null; | |
| } | |
| /** GET /exocore/api/audit?token=...&limit=200&action=role:* */ | |
| async function listAuditHandler(req, res) { | |
| try { | |
| const token = String(req.query.token || ""); | |
| const me = await userByToken(token); | |
| if (!me) | |
| return res.status(401).json({ success: false, message: "invalid token" }); | |
| if (me.role !== "owner") | |
| return res.status(403).json({ success: false, message: "owner only" }); | |
| const limit = Math.max(1, Math.min(1000, Number(req.query.limit) || 200)); | |
| const action = String(req.query.action || "") || undefined; | |
| return res.json({ success: true, entries: (0, auditStore_1.listAudit)(limit, action) }); | |
| } | |
| catch (e) { | |
| return res.status(500).json({ success: false, message: e?.message }); | |
| } | |
| } | |