from __future__ import annotations from typing import Optional from fastapi import Header, HTTPException, Request from pydantic import BaseModel class UserSession(BaseModel): user_id: str email: str username: str async def current_user( request: Request, x_user_id: Optional[str] = Header(None, alias="x-user-id"), x_user_email: Optional[str] = Header(None, alias="x-user-email"), ) -> UserSession: user_id = x_user_id or request.headers.get("x-user-id") email = x_user_email or request.headers.get("x-user-email", "") if not user_id: raise HTTPException(status_code=401, detail="Missing x-user-id header.") username = email or user_id return UserSession(user_id=user_id, email=email, username=username)