UNPKG

strapi-plugin-audit-logs

Version:

Comprehensive audit logging plugin for Strapi v5 that tracks all user interactions and system events with a clean admin interface and automatic cleanup

86 lines (78 loc) 2.27 kB
import pluginPkg from "../../package.json"; import pluginId from "./pluginId"; import Initializer from "./components/Initializer"; import PluginIcon from "./components/PluginIcon"; const name = pluginPkg.strapi.name; export default { register(app) { app.addMenuLink({ to: `/plugins/${pluginId}`, icon: PluginIcon, intlLabel: { id: `${pluginId}.plugin.name`, defaultMessage: "Audit Logs", }, Component: () => import("./pages/App/index"), permissions: [ { action: "plugin::audit-logs.read", subject: null, }, ], }); app.registerPlugin({ id: pluginId, initializer: Initializer, isReady: false, name, }); }, bootstrap(app) { // Plugin is ready }, async registerTrads(app) { const { locales } = app; const importedTrads = await Promise.all( (locales || []).map(async (locale) => { try { // Try to load the requested locale first const { default: data } = await import(`./translations/${locale}.json`); return { data: Object.keys(data).reduce((acc, current) => { acc[`${pluginId}.${current}`] = data[current]; return acc; }, {}), locale, }; } catch (error) { // If the requested locale doesn't exist, try to fall back to English if (locale !== 'en') { try { const { default: data } = await import(`./translations/en.json`); return { data: Object.keys(data).reduce((acc, current) => { acc[`${pluginId}.${current}`] = data[current]; return acc; }, {}), locale, }; } catch (fallbackError) { // If even English doesn't exist, return empty data return { data: {}, locale, }; } } else { // If English itself doesn't exist, return empty data return { data: {}, locale, }; } } }) ); return Promise.resolve(importedTrads); }, };