diff --git a/app/dependencies.py b/app/dependencies.py index c433848..44860e1 100644 --- a/app/dependencies.py +++ b/app/dependencies.py @@ -64,10 +64,15 @@ async def get_current_user(request: Request) -> Optional[UserContext]: # Try header first (API clients) ctx = get_user_from_header(request) if ctx: + # Add l2_server from settings + ctx.l2_server = settings.l2_server return ctx # Fall back to cookie (browser) - return get_user_from_cookie(request) + ctx = get_user_from_cookie(request) + if ctx: + ctx.l2_server = settings.l2_server + return ctx async def require_auth(request: Request) -> UserContext: diff --git a/app/routers/api.py b/app/routers/api.py index fe4f644..10421e5 100644 --- a/app/routers/api.py +++ b/app/routers/api.py @@ -15,8 +15,8 @@ import yaml from fastapi import APIRouter, Depends, HTTPException from pydantic import BaseModel +from artdag_common.middleware.auth import UserContext from ..dependencies import require_auth, get_redis_client, get_cache_manager -from ..services.auth_service import UserContext router = APIRouter() logger = logging.getLogger(__name__) diff --git a/app/routers/cache.py b/app/routers/cache.py index ec0f1b0..9120450 100644 --- a/app/routers/cache.py +++ b/app/routers/cache.py @@ -14,12 +14,13 @@ from pydantic import BaseModel from artdag_common import render from artdag_common.middleware import wants_html, wants_json +from artdag_common.middleware.auth import UserContext from ..dependencies import ( require_auth, get_templates, get_redis_client, get_cache_manager, get_current_user ) -from ..services.auth_service import UserContext, AuthService +from ..services.auth_service import AuthService from ..services.cache_service import CacheService router = APIRouter() diff --git a/app/routers/recipes.py b/app/routers/recipes.py index 3b66e0c..7199c47 100644 --- a/app/routers/recipes.py +++ b/app/routers/recipes.py @@ -13,9 +13,10 @@ from pydantic import BaseModel from artdag_common import render from artdag_common.middleware import wants_html, wants_json +from artdag_common.middleware.auth import UserContext from ..dependencies import require_auth, get_templates, get_redis_client, get_cache_manager -from ..services.auth_service import UserContext, AuthService +from ..services.auth_service import AuthService from ..services.recipe_service import RecipeService router = APIRouter() diff --git a/app/routers/runs.py b/app/routers/runs.py index 652f5a3..e744be5 100644 --- a/app/routers/runs.py +++ b/app/routers/runs.py @@ -16,12 +16,12 @@ from pydantic import BaseModel from artdag_common import render from artdag_common.middleware import wants_html, wants_json +from artdag_common.middleware.auth import UserContext from ..dependencies import ( require_auth, get_templates, get_current_user, get_redis_client, get_cache_manager ) -from ..services.auth_service import UserContext from ..services.run_service import RunService router = APIRouter() diff --git a/app/routers/storage.py b/app/routers/storage.py index 0ffc4fa..041e6bd 100644 --- a/app/routers/storage.py +++ b/app/routers/storage.py @@ -12,9 +12,9 @@ from pydantic import BaseModel from artdag_common import render from artdag_common.middleware import wants_html, wants_json +from artdag_common.middleware.auth import UserContext from ..dependencies import get_database, get_current_user, require_auth, get_templates -from ..services.auth_service import UserContext from ..services.storage_service import StorageService, STORAGE_PROVIDERS_INFO, VALID_PROVIDER_TYPES router = APIRouter() diff --git a/app/services/auth_service.py b/app/services/auth_service.py index 710f8c8..08e67fc 100644 --- a/app/services/auth_service.py +++ b/app/services/auth_service.py @@ -6,10 +6,10 @@ import hashlib import base64 import json from typing import Optional -from dataclasses import dataclass import httpx +from artdag_common.middleware.auth import UserContext from ..config import settings @@ -21,15 +21,6 @@ REVOKED_KEY_PREFIX = "artdag:revoked:" USER_TOKENS_PREFIX = "artdag:user_tokens:" -@dataclass -class UserContext: - """User context from token.""" - username: str - actor_id: str - token: Optional[str] = None - l2_server: Optional[str] = None - - class AuthService: """Service for authentication and token management.""" diff --git a/requirements.txt b/requirements.txt index e308a21..5c57d2c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,4 +11,4 @@ markdown>=3.5.0 # Core artdag from GitHub git+https://github.com/gilesbradshaw/art-dag.git # Shared components -git+https://git.rose-ash.com/art-dag/common.git@932abb8 +git+https://git.rose-ash.com/art-dag/common.git@11aa056