initial commit
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
34
src/services/audit.ts
Normal file
34
src/services/audit.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import { FastifyRequest } from 'fastify';
|
||||
import prisma from '../config/database';
|
||||
import { AuditAction, EntityType, AuthData } from '../types';
|
||||
|
||||
export async function logAudit(params: {
|
||||
request: FastifyRequest;
|
||||
authData?: AuthData | null;
|
||||
action: AuditAction;
|
||||
entityType?: EntityType;
|
||||
entityId?: number;
|
||||
description?: string;
|
||||
oldValues?: Record<string, unknown>;
|
||||
newValues?: Record<string, unknown>;
|
||||
}): Promise<void> {
|
||||
try {
|
||||
await prisma.audit_logs.create({
|
||||
data: {
|
||||
user_id: params.authData?.userId ?? null,
|
||||
username: params.authData?.username ?? null,
|
||||
user_ip: params.request.ip,
|
||||
action: params.action,
|
||||
entity_type: params.entityType ?? null,
|
||||
entity_id: params.entityId ?? null,
|
||||
description: params.description ?? null,
|
||||
old_values: params.oldValues ? JSON.stringify(params.oldValues) : null,
|
||||
new_values: params.newValues ? JSON.stringify(params.newValues) : null,
|
||||
user_agent: params.request.headers['user-agent'] ?? null,
|
||||
session_id: null,
|
||||
},
|
||||
});
|
||||
} catch (err) {
|
||||
console.error('Failed to write audit log:', err);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user