@strapi/provider-audit-logs-local
Version:
Local provider for strapi audit logs
84 lines (83 loc) • 1.99 kB
JavaScript
;
const schema = {
kind: "collectionType",
collectionName: "strapi_audit_logs",
info: {
singularName: "audit-log",
pluralName: "audit-logs",
displayName: "Audit Log"
},
options: {
draftAndPublish: false,
timestamps: false
},
pluginOptions: {
"content-manager": {
visible: false
},
"content-type-builder": {
visible: false
}
},
attributes: {
action: {
type: "string",
required: true
},
date: {
type: "datetime",
required: true
},
user: {
type: "relation",
relation: "oneToOne",
target: "admin::user"
},
payload: {
type: "json"
}
}
};
const auditLogContentType = {
schema
};
const index = {
async register({ strapi }) {
const contentTypes = strapi.container.get("content-types");
if (!contentTypes.keys().includes("admin::audit-log")) {
strapi.container.get("content-types").add("admin::", { "audit-log": auditLogContentType });
}
return {
async saveEvent(event) {
const { userId, ...rest } = event;
const auditLog = { ...rest, user: userId };
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", "payload"],
...query
});
},
findOne(id) {
return strapi.entityService?.findOne("admin::audit-log", id, {
populate: ["user"],
fields: ["action", "date", "payload"]
});
},
deleteExpiredEvents(expirationDate) {
return strapi.entityService?.deleteMany("admin::audit-log", {
filters: {
date: {
$lt: expirationDate.toISOString()
}
}
});
}
};
}
};
module.exports = index;
//# sourceMappingURL=index.js.map