""" API dependencies. """ from typing import Annotated from fastapi import Depends, HTTPException, status from fastapi.security import OAuth2PasswordBearer from sqlalchemy.orm import Session from app.core.database import get_db from app.core.security import decode_access_token from app.models.user import User oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/auth/login") async def get_current_user( db: Annotated[Session, Depends(get_db)], token: Annotated[str, Depends(oauth2_scheme)], ) -> User: """Get the current authenticated user.""" credentials_exception = HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Could not validate credentials", headers={"WWW-Authenticate": "Bearer"}, ) payload = decode_access_token(token) if payload is None: raise credentials_exception username: str = payload.get("sub") if username is None: raise credentials_exception user = db.query(User).filter(User.username == username).first() if user is None: raise credentials_exception return user CurrentUser = Annotated[User, Depends(get_current_user)] DbSession = Annotated[Session, Depends(get_db)]