53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
from __future__ import annotations
|
|
|
|
from fastapi import Depends, Request
|
|
|
|
from app.accounts.service import AccountService
|
|
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_account_service(request: Request) -> AccountService:
|
|
return request.app.state.container.account_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,
|
|
)
|