fix(archive/v1): middleware inherits BaseHTTPMiddleware to fix 500 errors (#570)
This commit is contained in:
parent
4698f54fa0
commit
68b042faf6
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue