Tahasaif3's picture
'code'
57a6662
from fastapi import HTTPException, status
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
from typing import Optional
from sqlmodel import Session
import uuid
from ..models.user import User
from ..utils.security import verify_user_id_from_token
from ..database import get_session_dep
from fastapi import Depends
# Security scheme for JWT
security = HTTPBearer()
async def verify_jwt_token(
credentials: HTTPAuthorizationCredentials = Depends(security),
session: Session = Depends(get_session_dep)
):
"""Verify JWT token and return user_id if valid."""
token = credentials.credentials
user_id = verify_user_id_from_token(token)
if not user_id:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Invalid token or expired token.",
headers={"WWW-Authenticate": "Bearer"},
)
# Get user from database to ensure they still exist
user = session.get(User, user_id)
if not user:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="User no longer exists.",
headers={"WWW-Authenticate": "Bearer"},
)
return user_id