Vastai-ConnectHub/app/security/audit.py

35 lines
806 B
Python

from __future__ import annotations
from typing import Any
from sqlalchemy.orm import Session
from app.db.models import AuditLog, User
def log_event(
session: Session,
*,
action: str,
target: str = "",
detail: dict[str, Any] | None = None,
request=None,
actor: User | None = None,
) -> None:
ip = ""
user_agent = ""
if request is not None:
ip = request.client.host if getattr(request, "client", None) else ""
user_agent = request.headers.get("User-Agent", "") if getattr(request, "headers", None) else ""
log = AuditLog(
actor_user_id=actor.id if actor else None,
action=action,
target=target,
detail=detail or {},
ip=ip,
user_agent=user_agent,
)
session.add(log)
session.commit()