Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/workflows/create_pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,6 @@ jobs:
maxColorRange: 100
minColorRange: 0


create_pull_request:
runs-on: ubuntu-latest
needs: test # This creates the dependency link
Expand Down
3 changes: 2 additions & 1 deletion app/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

from app.api_router import api
from app.logger import logger
from app.middlewares import log_request_middleware
from app.middlewares import AllowAuthorizedDocAccess, log_request_middleware
from app.settings import Settings

settings = Settings() # type: ignore
Expand Down Expand Up @@ -55,6 +55,7 @@ def initiate_app():
# Add allowed hosts here
],
)
app.add_middleware(AllowAuthorizedDocAccess)
app.add_middleware(BaseHTTPMiddleware, dispatch=log_request_middleware)

limiter = Limiter(key_func=get_remote_address)
Expand Down
21 changes: 21 additions & 0 deletions app/middlewares.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import time

from fastapi import Request, Response
from fastapi.responses import JSONResponse
from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint

from app.logger import logger

Expand All @@ -18,3 +20,22 @@ async def log_request_middleware(request: Request, call_next):

logger.info(log_dict)
return response


class AllowAuthorizedDocAccess(BaseHTTPMiddleware):
allowed_ips = [
"127.0.0.1", # allows Viewing Docs in Local Development Environment
]

async def dispatch(
self, request: Request, call_next: RequestResponseEndpoint
) -> Response:
client_ip = request.client.host # type: ignore
if "/docs" in request.url.path:
if client_ip not in self.allowed_ips:
return JSONResponse(
status_code=500, content="Application Has Crashed 😭"
)

response = await call_next(request)
return response
Loading