File size: 762 Bytes
06671aa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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)