from fastapi import Depends, HTTPException, status from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer from firebase_admin import auth from firebase_admin.auth import ExpiredIdTokenError, InvalidIdTokenError security = HTTPBearer() def get_current_user( credentials: HTTPAuthorizationCredentials = Depends(security), ): try: payload = auth.verify_id_token(credentials.credentials) except ExpiredIdTokenError as e: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Token expired", headers={"WWW-Authenticate": "Bearer"}, ) except InvalidIdTokenError as e: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid token", headers={"WWW-Authenticate": "Bearer"}, ) except ValueError as e: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid token", headers={"WWW-Authenticate": "Bearer"}, ) except Exception as e: raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR) return payload