from fastapi import Request from typing import Any, Dict, Optional from app.repositories import fake_db_repo from app.models.usermodel import UserModel async def get_context(request: Request) -> Dict[str, Any]: """ Crée le contexte pour chaque requête GraphQL. C'est ici que nous gérons l'authentification (AuthN). Nous lisons l'en-tête HTTP Authorization, validons le "token" (simulé ici), et injectons 'current_user' dans le contexte. """ current_user: Optional[UserModel] = None auth_header = request.headers.get("Authorization") # Simulation de validation de token if auth_header == "Bearer admin-token": current_user = await fake_db_repo.get_user_by_id(3) # Admin elif auth_header == "Bearer alice-token": current_user = await fake_db_repo.get_user_by_id(1) # Alice elif auth_header == "Bearer bob-token": current_user = await fake_db_repo.get_user_by_id(2) # Bob return { "request": request, "current_user": current_user # Injecté pour tous les resolvers }