from fastapi import Depends, HTTPException, status from fastapi.security import OAuth2PasswordBearer from jose import jwt from pydantic import ValidationError import schemas from core import security from core.config import settings reusable_oauth2 = OAuth2PasswordBearer( tokenUrl=f"{settings.API_V1_STR}/user/login" ) def get_current_user(token: str = Depends(reusable_oauth2) ) -> schemas.UserDB: # def get_current_user(token: str # ) -> schemas.UserDBBase: try: payload = jwt.decode( token, settings.SECRET_KEY, algorithms=[security.ALGORITHM] ) user = schemas.UserDB(**payload) except (jwt.JWTError, ValidationError): raise HTTPException( status_code=status.HTTP_403_FORBIDDEN, detail="Could not validate credentials", ) if not user: raise HTTPException(status_code=404, detail="User not found") return user