29 lines
1.0 KiB
Python
29 lines
1.0 KiB
Python
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
|
|
} |