diff --git a/src/audit/service.py b/src/audit/service.py index 02df3d6..4be6b79 100644 --- a/src/audit/service.py +++ b/src/audit/service.py @@ -1,6 +1,6 @@ from typing import Any -from fastapi import Depends, Request +from fastapi import Depends from loguru import logger from sqlalchemy.ext.asyncio import AsyncSession @@ -77,13 +77,3 @@ async def get_audit_service( ) -> AuditService: repository = AuditRepository(session=session) return AuditService(repository=repository) - - -def extract_client_info(request: Request) -> tuple[str | None, str | None]: - user_agent = request.headers.get("user-agent") - forwarded_for = request.headers.get("x-forwarded-for") - if forwarded_for: - ip = forwarded_for.split(",")[0].strip() - else: - ip = request.client.host if request.client else None - return user_agent, ip diff --git a/src/auth/__init__.py b/src/auth/__init__.py index 20f2201..00e8c39 100644 --- a/src/auth/__init__.py +++ b/src/auth/__init__.py @@ -4,7 +4,7 @@ from src.audit import AuditService, get_audit_service from src.audit.dependencies import generate_request_id from src.audit.schemas import AuditAction, AuditResult -from src.audit.service import extract_client_info +from src.http.utils import extract_client_info from src.auth.models import User from .backend import auth_backend diff --git a/src/auth/rbac.py b/src/auth/rbac.py index 0698574..be781b2 100644 --- a/src/auth/rbac.py +++ b/src/auth/rbac.py @@ -7,7 +7,7 @@ from src.audit import AuditService, generate_request_id, get_audit_service from src.audit.schemas import AuditAction, AuditResult -from src.audit.service import extract_client_info +from src.http.utils import extract_client_info from src.auth.models import Permission, Role, RolePermission, User, UserRole from src.auth.exceptions import ( InsufficientPermissionException, diff --git a/src/http/routers/auth.py b/src/http/routers/auth.py index d2247cc..e38291e 100644 --- a/src/http/routers/auth.py +++ b/src/http/routers/auth.py @@ -3,7 +3,7 @@ from src.audit import AuditService, get_audit_service from src.audit.schemas import AuditAction, AuditResult -from src.audit.service import extract_client_info +from src.http.utils import extract_client_info from src.auth import fastapi_users from src.auth.backend import ( RefreshTokenManager, diff --git a/src/http/utils.py b/src/http/utils.py new file mode 100644 index 0000000..bd1eafa --- /dev/null +++ b/src/http/utils.py @@ -0,0 +1,11 @@ +from fastapi import Request + + +def extract_client_info(request: Request) -> tuple[str | None, str | None]: + user_agent = request.headers.get("user-agent") + forwarded_for = request.headers.get("x-forwarded-for") + if forwarded_for: + ip = forwarded_for.split(",")[0].strip() + else: + ip = request.client.host if request.client else None + return user_agent, ip