from fastapi import HTTPException, Header import jwt from dotenv import load_dotenv import os load_dotenv() def get_secret_key(): return os.getenv("SECRET_KEY") async def verify_token(authorization: str = Header(...)): try: token_type, token = authorization.split() if token_type.lower() != "bearer": raise HTTPException(status_code=401, detail="Invalid token type") return jwt.decode(token, get_secret_key(), algorithms=["HS256"]) except jwt.ExpiredSignatureError: raise HTTPException(status_code=401, detail="Token has expired") except (jwt.InvalidTokenError, IndexError): raise HTTPException(status_code=401, detail="Invalid token")