FluxIP/app/dependencies.py

48 lines
1.4 KiB
Python

from __future__ import annotations
from fastapi import Depends, Request
from app.auth.repository import SessionRecord
from app.auth.service import AuthService
from app.core.config import AppSettings
from app.dashboard.service import DashboardService
from app.fleet.service import FleetService
from app.integrations.service import IntegrationService
from app.rotation.service import RotationService
def get_app_settings(request: Request) -> AppSettings:
return request.app.state.container.settings
def get_auth_service(request: Request) -> AuthService:
return request.app.state.container.auth_service
def get_integration_service(request: Request) -> IntegrationService:
return request.app.state.container.integration_service
def get_rotation_service(request: Request) -> RotationService:
return request.app.state.container.rotation_service
def get_fleet_service(request: Request) -> FleetService:
return request.app.state.container.fleet_service
def get_dashboard_service(request: Request) -> DashboardService:
return request.app.state.container.dashboard_service
def require_session(
request: Request,
service: AuthService = Depends(get_auth_service),
) -> SessionRecord:
unsafe = request.method not in {"GET", "HEAD", "OPTIONS"}
return service.require_auth(
request.cookies.get("fluxip_session"),
request.headers.get("X-CSRF-Token"),
unsafe,
)