-
This commit is contained in:
@ -192,16 +192,44 @@ func (h *AuditHandler) ListEvents(c *gin.Context) {
|
||||
// GetEvent handles GET /audit/events/:id
|
||||
func (h *AuditHandler) GetEvent(c *gin.Context) {
|
||||
eventIDStr := c.Param("id")
|
||||
_, err := uuid.Parse(eventIDStr)
|
||||
eventID, err := uuid.Parse(eventIDStr)
|
||||
if err != nil {
|
||||
h.errorHandler.HandleValidationError(c, "id", "Invalid event ID format")
|
||||
return
|
||||
}
|
||||
|
||||
// Single event retrieval not yet implemented
|
||||
c.JSON(http.StatusNotImplemented, gin.H{
|
||||
"error": "Single event retrieval not yet implemented",
|
||||
})
|
||||
// Get the specific audit event
|
||||
event, err := h.auditLogger.GetEventByID(c.Request.Context(), eventID)
|
||||
if err != nil {
|
||||
h.logger.Error("Failed to get audit event", zap.Error(err), zap.String("event_id", eventID.String()))
|
||||
// Check if it's a not found error
|
||||
if err.Error() == "audit event with ID '"+eventID.String()+"' not found" {
|
||||
h.errorHandler.HandleNotFoundError(c, "audit_event", "Audit event not found")
|
||||
} else {
|
||||
h.errorHandler.HandleInternalError(c, err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Convert to response format
|
||||
response := AuditEventResponse{
|
||||
ID: event.ID.String(),
|
||||
Type: string(event.Type),
|
||||
Status: string(event.Status),
|
||||
Timestamp: event.Timestamp.Format(time.RFC3339),
|
||||
ActorID: event.ActorID,
|
||||
ActorIP: event.ActorIP,
|
||||
UserAgent: event.UserAgent,
|
||||
ResourceID: event.ResourceID,
|
||||
ResourceType: event.ResourceType,
|
||||
Action: event.Action,
|
||||
Description: event.Description,
|
||||
Details: event.Details,
|
||||
RequestID: event.RequestID,
|
||||
SessionID: event.SessionID,
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, response)
|
||||
}
|
||||
|
||||
// GetStats handles GET /audit/stats
|
||||
|
||||
Reference in New Issue
Block a user