Six site improvements picked from a "what could be better" review, plus a Jest test suite covering the two areas with the trickiest money-handling history in this project (early-bird pricing tranches, donation-leg accounting): - "Add to calendar" .ics download on event pages and in confirmation emails - sitemap.xml, robots.txt, and Open Graph/Twitter metadata for public pages - Sentry error monitoring (backend + frontend), a no-op until SENTRY_DSN is set - Nightly local pg_dump backups with a Site Settings tab to browse/trigger/download - Admin audit trail for refunds, donations, manual registrations, event and settings changes, and staff-initiated cancellations - Jest tests reproducing and guarding against the 1.8.0 tranche-pricing bug and the 1.4.2 donation-balance-inflation bug Wallet passes (Google/Apple) were scoped out of this round — Apple Wallet needs a paid Apple Developer account the project doesn't have yet, and the user preferred shipping both together later rather than Google alone now. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
18 lines
599 B
JavaScript
18 lines
599 B
JavaScript
const { getAdminAuditLog } = require('../utils/adminAudit');
|
|
const { safeErrorMessage } = require('../utils/errorUtils');
|
|
|
|
// @desc Paginated admin/supervisor action audit trail, with optional filters
|
|
// @route GET /api/admin/audit-log
|
|
// @access Admin
|
|
const listAuditLog = async (req, res) => {
|
|
try {
|
|
const { page, limit, actorId, action, from, to } = req.query;
|
|
const result = await getAdminAuditLog({ page, limit, actorId, action, from, to });
|
|
res.json(result);
|
|
} catch (e) {
|
|
res.status(500).json({ message: safeErrorMessage(e) });
|
|
}
|
|
};
|
|
|
|
module.exports = { listAuditLog };
|