You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.4 KiB
Python
40 lines
1.4 KiB
Python
from fastapi import APIRouter, Depends
|
|
|
|
from admin_app.api.dependencies import get_audit_service, require_admin_permission
|
|
from admin_app.api.schemas import AdminAuditEntryResponse, AdminAuditListResponse
|
|
from admin_app.core import AuthenticatedStaffPrincipal
|
|
from admin_app.services import AuditService
|
|
from shared.contracts import AdminPermission
|
|
|
|
# login/logout da API admin.
|
|
|
|
router = APIRouter(prefix="/audit", tags=["audit"])
|
|
|
|
|
|
@router.get("/events", response_model=AdminAuditListResponse)
|
|
def list_audit_events(
|
|
audit_service: AuditService = Depends(get_audit_service),
|
|
_: AuthenticatedStaffPrincipal = Depends(
|
|
require_admin_permission(AdminPermission.VIEW_AUDIT_LOGS)
|
|
),
|
|
):
|
|
events = audit_service.list_recent(limit=50)
|
|
return AdminAuditListResponse(
|
|
service="orquestrador-admin",
|
|
events=[
|
|
AdminAuditEntryResponse(
|
|
id=event.id,
|
|
actor_staff_account_id=event.actor_staff_account_id,
|
|
event_type=event.event_type,
|
|
resource_type=event.resource_type,
|
|
resource_id=event.resource_id,
|
|
outcome=event.outcome,
|
|
message=event.message,
|
|
payload_json=event.payload_json,
|
|
ip_address=event.ip_address,
|
|
user_agent=event.user_agent,
|
|
created_at=event.created_at,
|
|
)
|
|
for event in events
|
|
],
|
|
) |