feat: implement audit logging system with service, controller, and interceptor to track user actions across core services
This commit is contained in:
@@ -9,12 +9,15 @@ import { EventEmitter2 } from '@nestjs/event-emitter';
|
||||
import { PrismaService } from '../prisma/prisma.service';
|
||||
import { ConnectionStatus } from '@prisma/client';
|
||||
import { CreateConnectionRequestDto, RespondConnectionRequestDto } from './dto';
|
||||
import { AuditService } from '../audit/audit.service';
|
||||
import { AuditAction } from '../audit/audit.constants';
|
||||
|
||||
@Injectable()
|
||||
export class ConnectionRequestsService {
|
||||
constructor(
|
||||
private prisma: PrismaService,
|
||||
private eventEmitter: EventEmitter2,
|
||||
private audit: AuditService,
|
||||
) {}
|
||||
|
||||
/**
|
||||
@@ -320,6 +323,16 @@ export class ConnectionRequestsService {
|
||||
connectionRequestId: requestId,
|
||||
});
|
||||
|
||||
this.audit.log({
|
||||
action:
|
||||
dto.status === ConnectionStatus.ACCEPTED
|
||||
? AuditAction.CONNECTION_REQUEST_ACCEPT
|
||||
: AuditAction.CONNECTION_REQUEST_REJECT,
|
||||
resourceType: 'ConnectionRequest',
|
||||
resourceId: requestId,
|
||||
metadata: { userId: request.userId, agentProfileId },
|
||||
});
|
||||
|
||||
return updated;
|
||||
}
|
||||
|
||||
@@ -385,9 +398,22 @@ export class ConnectionRequestsService {
|
||||
throw new BadRequestException('Only pending or accepted connections can be removed');
|
||||
}
|
||||
|
||||
return this.prisma.connectionRequest.delete({
|
||||
const deleted = await this.prisma.connectionRequest.delete({
|
||||
where: { id: requestId },
|
||||
});
|
||||
|
||||
this.audit.log({
|
||||
action: AuditAction.CONNECTION_REQUEST_CANCEL,
|
||||
resourceType: 'ConnectionRequest',
|
||||
resourceId: requestId,
|
||||
metadata: {
|
||||
userId: request.userId,
|
||||
agentProfileId: request.agentProfileId,
|
||||
previousStatus: request.status,
|
||||
},
|
||||
});
|
||||
|
||||
return deleted;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user