✨ Update all for Postgres and new techniques
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
import jwt
|
||||
from fastapi import Depends, HTTPException, Security
|
||||
from fastapi.security import OAuth2PasswordBearer
|
||||
from jwt import PyJWTError
|
||||
from sqlalchemy.orm import Session
|
||||
from starlette.status import HTTP_403_FORBIDDEN
|
||||
|
||||
from app.api.utils.db import get_db
|
||||
from app.core import config
|
||||
from app.core.jwt import ALGORITHM
|
||||
from app.crud import user as crud_user
|
||||
from app.models.token import TokenPayload
|
||||
|
||||
reusable_oauth2 = OAuth2PasswordBearer(tokenUrl="/api/v1/login/access-token")
|
||||
|
||||
|
||||
def get_current_user(
|
||||
db: Session = Depends(get_db), token: str = Security(reusable_oauth2)
|
||||
):
|
||||
try:
|
||||
payload = jwt.decode(token, config.SECRET_KEY, algorithms=[ALGORITHM])
|
||||
token_data = TokenPayload(**payload)
|
||||
except PyJWTError:
|
||||
raise HTTPException(
|
||||
status_code=HTTP_403_FORBIDDEN, detail="Could not validate credentials"
|
||||
)
|
||||
user = crud_user.get(db, user_id=token_data.user_id)
|
||||
if not user:
|
||||
raise HTTPException(status_code=404, detail="User not found")
|
||||
return user
|
||||
Reference in New Issue
Block a user