helpyourneighbour/backend/middleware/auditLogger.js

33 lines
1.1 KiB
JavaScript
Raw Permalink Normal View History

// middleware/auditLogger.js
const db = require('../db');
/**
* Middleware zur Protokollierung sensibler Aktionen
* @param {string} action - Name der Aktion (z.B. 'USER_SUSPEND')
* @param {string} targetType - Typ des Zielobjekts (z.B. 'user')
* @returns {function} Express-Middleware-Funktion
*/
function auditLogger(action, targetType) {
return async (req, res, next) => {
try {
const timestamp = new Date().toISOString();
const actorUserId = req.user?.id || null;
const targetId = req.params.id || req.body.id || null;
const reason = req.body.reason || null;
// Audit-Eintrag in die Datenbank schreiben
await db.run(
'INSERT INTO audit_log (timestamp, actor_user_id, action, target_type, target_id, reason) VALUES (?, ?, ?, ?, ?, ?)',
[timestamp, actorUserId, action, targetType, targetId, reason]
);
next();
} catch (err) {
console.error('Audit logging failed:', err);
// Fehler bei Audit-Logging sollte nicht den Request blockieren
next();
}
};
}
module.exports = auditLogger;