diff --git a/.deploy/deploy-dev.yaml b/.deploy/deploy-dev.yaml index 0bff8f8..980513d 100644 --- a/.deploy/deploy-dev.yaml +++ b/.deploy/deploy-dev.yaml @@ -9,6 +9,7 @@ services: environment: MONGO_HOST: "mongo.develop.sprinthub.ru" MONGO_PASSWORD: $MONGO_PASSWORD_DEV + QUEUES_TOKEN: $QUEUES_TOKEN_DEV deploy: mode: replicated restart_policy: diff --git a/.deploy/deploy-prod.yaml b/.deploy/deploy-prod.yaml index da01733..6ad74f6 100644 --- a/.deploy/deploy-prod.yaml +++ b/.deploy/deploy-prod.yaml @@ -9,6 +9,7 @@ services: environment: MONGO_HOST: "mongo.sprinthub.ru" MONGO_PASSWORD: $MONGO_PASSWORD_PROD + QUEUES_TOKEN: $QUEUES_TOKEN_PROD deploy: mode: replicated restart_policy: diff --git a/.gitea/workflows/deploy-dev.yaml b/.gitea/workflows/deploy-dev.yaml index cc552f9..fe6e8c3 100644 --- a/.gitea/workflows/deploy-dev.yaml +++ b/.gitea/workflows/deploy-dev.yaml @@ -40,4 +40,5 @@ jobs: - name: deploy env: MONGO_PASSWORD_DEV: ${{ secrets.MONGO_PASSWORD_DEV }} + QUEUES_TOKEN_DEV: ${{ secrets.QUEUES_TOKEN_DEV }} run: docker stack deploy --with-registry-auth -c ./.deploy/deploy-dev.yaml infra \ No newline at end of file diff --git a/.gitea/workflows/deploy-prod.yaml b/.gitea/workflows/deploy-prod.yaml index 9a6c82f..51fd352 100644 --- a/.gitea/workflows/deploy-prod.yaml +++ b/.gitea/workflows/deploy-prod.yaml @@ -40,4 +40,5 @@ jobs: - name: deploy env: MONGO_PASSWORD_PROD: ${{ secrets.MONGO_PASSWORD_PROD }} + QUEUES_TOKEN_PROD: ${{ secrets.QUEUES_TOKEN_PROD }} run: docker stack deploy --with-registry-auth -c ./.deploy/deploy-prod.yaml infra diff --git a/app/middlewares/__init__.py b/app/middlewares/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/middlewares/check_token.py b/app/middlewares/check_token.py new file mode 100644 index 0000000..3c017b6 --- /dev/null +++ b/app/middlewares/check_token.py @@ -0,0 +1,13 @@ +import fastapi +import os + + +QUEUES_TOKEN = os.getenv('QUEUES_TOKEN') + +class CheckToken: + async def __call__(self, request: fastapi.Request, call_next): + if QUEUES_TOKEN: + token = request.headers.get('X-Queues-Token') + if not token or token != QUEUES_TOKEN: + raise fastapi.HTTPException(403) + return await call_next(request) diff --git a/main.py b/main.py index 17f0c6d..3e902cf 100644 --- a/main.py +++ b/main.py @@ -1,15 +1,19 @@ import fastapi import uvicorn -from app.storage import mongo +from app.middlewares import check_token from app.routers import take from app.routers import put from app.routers import finish +from app.storage import mongo + app = fastapi.FastAPI() +app.add_middleware(check_token.CheckToken) + app.include_router(take.router) app.include_router(put.router) app.include_router(finish.router)