todo-backend / src /api /dependencies.py
ibad363's picture
todo-backend
a291087
Raw History Blame Contribute Delete
1.04 kB
from typing import Generator, Annotated
from sqlmodel import Session, select
from fastapi import Depends, HTTPException, status
from ..core.database import engine
from ..core.security import oauth2_scheme, decode_token
from ..models.user import User
def get_session() -> Generator[Session, None, None]:
with Session(engine) as session:
yield session
SessionDep = Annotated[Session, Depends(get_session)]
def get_current_user(
session: SessionDep,
token: Annotated[str, Depends(oauth2_scheme)]
) -> User:
user_id = decode_token(token)
if not user_id:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Could not validate credentials",
headers={"WWW-Authenticate": "Bearer"},
)
user = session.get(User, int(user_id))
if not user:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="User not found"
)
return user
CurrentUserDep = Annotated[User, Depends(get_current_user)]