2022-12-30 11:02:41 +01:00

54 lines
1.4 KiB
JavaScript

'use strict';
const auditLogContentType = require('./content-types/audit-log');
// @TODO: Hardcoded for now, we should get this from the config later
const RETENTION_DAYS = 7;
const provider = {
async register({ strapi }) {
strapi.container.get('content-types').add('admin::', { 'audit-log': auditLogContentType });
// Return the provider object
return {
async saveEvent(event) {
// Rewrite userId key to user
const auditLog = { ...event, user: event.userId };
delete auditLog.userId;
// Save to database
await strapi.entityService.create('admin::audit-log', { data: auditLog });
return this;
},
findMany(query) {
return strapi.entityService.findPage('admin::audit-log', {
populate: ['user'],
fields: ['action', 'date'],
...query,
});
},
findOne(id) {
return strapi.entityService.findOne('admin::audit-log', id, {
populate: ['user'],
fields: ['action', 'date', 'payload'],
});
},
deleteExpiredEvents() {
return strapi.entityService.deleteMany('admin::audit-log', {
filters: {
date: {
$lt: new Date(Date.now() - RETENTION_DAYS * 24 * 60 * 60 * 1000).toISOString(),
},
},
});
},
};
},
};
module.exports = provider;