fix(archive/v1): middleware inherits BaseHTTPMiddleware to fix 500 errors (#570)

This commit is contained in:
DavidKrame 2026-05-17 23:32:22 +02:00 committed by GitHub
parent 4698f54fa0
commit 68b042faf6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
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 import Request, Response, HTTPException, status
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
from starlette.middleware.base import BaseHTTPMiddleware
from jose import JWTError, jwt from jose import JWTError, jwt
from passlib.context import CryptContext from passlib.context import CryptContext
@ -155,16 +156,17 @@ class UserManager:
return False return False
class AuthenticationMiddleware: class AuthenticationMiddleware(BaseHTTPMiddleware):
"""Authentication middleware for FastAPI.""" """Authentication middleware for FastAPI."""
def __init__(self, settings: Settings): def __init__(self, app, settings: Settings):
super().__init__(app)
self.settings = settings self.settings = settings
self.token_manager = TokenManager(settings) self.token_manager = TokenManager(settings)
self.user_manager = UserManager() self.user_manager = UserManager()
self.enabled = settings.enable_authentication 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.""" """Process request through authentication middleware."""
start_time = time.time() start_time = time.time()

View File

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