Files
headquarter/apps/api/src/auth/dependencies.py
T
Fusion 0fcfc745ff fix: add alias=session to Cookie dependencies
FastAPI uses parameter name as cookie name by default.
get_current_user_id was looking for 'session_cookie' but we set
the cookie as 'session'. Add alias='session' to match.
2026-05-19 10:56:11 +02:00

50 lines
1.7 KiB
Python

import uuid
from typing import Annotated
from fastapi import Cookie, Depends, HTTPException, status
from sqlalchemy.ext.asyncio import AsyncSession
from src.auth.session import decode_session_cookie
from src.config import Settings
from src.database import SessionLocal
from src.models.user import User
async def get_db_session():
async with SessionLocal() as session:
yield session
async def get_current_user_id(
session_cookie: Annotated[str | None, Cookie(alias="session")] = None,
) -> uuid.UUID:
if not session_cookie:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="missing session")
settings = Settings()
try:
payload = decode_session_cookie(settings=settings, cookie_value=session_cookie)
return uuid.UUID(str(payload["user_id"]))
except ValueError:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="invalid session")
async def get_current_user(
session_cookie: Annotated[str | None, Cookie(alias="session")] = None,
db_session: AsyncSession = Depends(get_db_session),
) -> User:
if not session_cookie:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="missing session")
settings = Settings()
try:
payload = decode_session_cookie(settings=settings, cookie_value=session_cookie)
user_id = uuid.UUID(str(payload["user_id"]))
except ValueError:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="invalid session")
user = await db_session.get(User, user_id)
if user is None:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="user not found")
return user