@chrono-os/admin-audit
v0.1.0
Published
Audit log de ações admin (model AdminAction com diff JSONB + ipHash) + middleware requireAdmin (Fastify hook) + helper logAdminAction. Generalizado com predicate (user) => boolean. Reaproveitável em qualquer admin com 2+ operadores
Maintainers
Readme
@chrono-os/admin-audit
Audit log de ações admin: model AdminAction (adminUserId/action/targetType/targetId/diff JSONB/ipHash) + middleware requireAdmin (Fastify hook preHandler) + helper logAdminAction(request, input) (best-effort, nunca quebra ação principal). Generalizado com predicate (user) => boolean em vez de hardcode de role.
Status
🚧 0.1.0 em construção — código será extraído do SVA na Fase 1 da Trilha C.
Install
yarn add @chrono-os/admin-auditAplicar template Prisma:
cat node_modules/@chrono-os/admin-audit/prisma/schema.template.prisma >> prisma/schema.prisma
yarn prisma migrate dev --name add_admin_auditUso
import { adminAuditPlugin, logAdminAction } from '@chrono-os/admin-audit/fastify'
await server.register(adminAuditPlugin, {
isAdmin: (user) => user.role === 'ADMIN',
getSession: async (req) => getSessionFromRequest(req),
})
// Nas rotas admin
server.get('/admin/orders', { preHandler: server.requireAdmin }, async (req) => {
const orders = await prisma.order.findMany()
await logAdminAction(req, {
action: 'list',
targetType: 'order',
})
return orders
})API
adminAuditPlugin(opts)— Fastify plugin que registrarequireAdmindecoratorlogAdminAction(request, input)— helper best-effort (warn em falha, não bloqueia)- Model Prisma:
AdminAction(com índicesadminUserId+createdAt,targetType+targetId,createdAt)
Generalização
Diferente do código original, o pacote aceita predicate de admin:
isAdmin: (user) => user.permissions.includes('admin.audit') // pode ser por permissão, não só roleVersionamento
SemVer. Tag v* → npmjs.org.
Origem
Extraído de apps/api/src/lib/admin-audit.ts, apps/api/src/lib/require-admin.ts, model AdminAction em packages/db/prisma/schema.prisma do SVA.
