fix: middleware classes inherit BaseHTTPMiddleware to fix 500 errors on all API requests

This commit is contained in:
kramedavid@gmail.com 2026-05-15 10:10:07 +02:00
parent bf30844835
commit e64d6dee8e
2 changed files with 14 additions and 10 deletions

View file

@ -9,6 +9,7 @@ from datetime import datetime, timedelta
from fastapi import Request, Response, HTTPException, status
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
from starlette.middleware.base import BaseHTTPMiddleware
from jose import JWTError, jwt
from passlib.context import CryptContext
@ -155,16 +156,17 @@ class UserManager:
return False
class AuthenticationMiddleware:
class AuthenticationMiddleware(BaseHTTPMiddleware):
"""Authentication middleware for FastAPI."""
def __init__(self, settings: Settings):
def __init__(self, app, settings: Settings):
super().__init__(app)
self.settings = settings
self.token_manager = TokenManager(settings)
self.user_manager = UserManager()
self.enabled = settings.enable_authentication
async def __call__(self, request: Request, call_next: Callable) -> Response:
async def dispatch(self, request: Request, call_next: Callable) -> Response:
"""Process request through authentication middleware."""
start_time = time.time()

View file

@ -11,6 +11,7 @@ from collections import defaultdict, deque
from dataclasses import dataclass
from fastapi import Request, Response, HTTPException, status
from starlette.middleware.base import BaseHTTPMiddleware
from starlette.types import ASGIApp
from src.config.settings import Settings
@ -299,15 +300,16 @@ class RateLimiter:
}
class RateLimitMiddleware:
class RateLimitMiddleware(BaseHTTPMiddleware):
"""Rate limiting middleware for FastAPI."""
def __init__(self, settings: Settings):
def __init__(self, app, settings: Settings):
super().__init__(app)
self.settings = settings
self.rate_limiter = RateLimiter(settings)
self.enabled = settings.enable_rate_limiting
async def __call__(self, request: Request, call_next: Callable) -> Response:
async def dispatch(self, request: Request, call_next: Callable) -> Response:
"""Process request through rate limiting middleware."""
if not self.enabled:
return await call_next(request)