"""Shared API dependencies.""" import uuid from typing import Annotated from fastapi import Depends, Header, HTTPException, status from sqlalchemy.ext.asyncio import AsyncSession from app.core.db import get_session from app.models.user import User from app.services.user_service import get_user SessionDep = Annotated[AsyncSession, Depends(get_session)] async def get_current_user( session: SessionDep, x_user_id: Annotated[uuid.UUID | None, Header()] = None, ) -> User: """TEMPORARY pre-auth shim: identifies the caller via the ``X-User-Id`` header. Replaced by the AuthProvider (sessions/tokens) in the auth slice. The assistant principal will also be minted here, scoped to its user.""" if x_user_id is None: raise HTTPException( status.HTTP_401_UNAUTHORIZED, "X-User-Id header required (pre-auth)" ) user = await get_user(session, x_user_id) if user is None: raise HTTPException(status.HTTP_401_UNAUTHORIZED, "unknown user") return user CurrentUser = Annotated[User, Depends(get_current_user)]