test / app /auth.py
ismailelghazi
Upload Docker app
21f81f9
raw
history blame contribute delete
968 Bytes
from fastapi import Request, HTTPException, status, Depends
from sqlalchemy.orm import Session
from .utils import jwt_handler
from .database import get_db
from . import models
def get_current_user(request: Request, db: Session = Depends(get_db)):
token = request.cookies.get("access_token")
if not token:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Not authenticated")
# Remove "Bearer " prefix if present
if token.startswith("Bearer "):
token = token.split(" ")[1]
payload = jwt_handler.verify_token(token)
if not payload:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid or expired token")
username = payload.get("sub")
user = db.query(models.User).filter(models.User.username == username).first()
if not user:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="User not found")
return user