28 lines
940 B
Python
28 lines
940 B
Python
from fastapi import HTTPException, Depends
|
|
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
|
|
from services.jwtService import verify_jwt_token
|
|
from services.userServices import UserServices
|
|
from fastapi import Request
|
|
|
|
security = HTTPBearer()
|
|
|
|
async def auth_required(request: Request ,credentials: HTTPAuthorizationCredentials = Depends(security)):
|
|
"""
|
|
Dependency function to verify JWT token for protected routes
|
|
"""
|
|
if credentials.scheme != "Bearer":
|
|
raise HTTPException(status_code=401, detail="Invalid authentication scheme")
|
|
|
|
payload = verify_jwt_token(credentials.credentials)
|
|
if payload is None:
|
|
raise HTTPException(status_code=401, detail="Invalid authentication token")
|
|
|
|
# Get user from database
|
|
user = UserServices().get_user(payload["id"])
|
|
|
|
# set user to request state
|
|
request.state.user = user
|
|
request.state.payload = payload
|
|
|
|
return True
|