From 4ca9491824b3d8487b504c2dea91e5bb465912c1 Mon Sep 17 00:00:00 2001 From: Untone Date: Wed, 29 Nov 2023 00:19:33 +0300 Subject: [PATCH] routes-fix --- README.md | 2 +- main.py | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 853b1ba5..92bb76f7 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ poetry run python server.py ### Auth -Put the header 'Authorization' with token from signIn query or registerUser mutation. +Put the header 'Authorization' with token from signIn query or registerUser mutation. Setup `WEBHOOK_SECRET` env var ### Viewed diff --git a/main.py b/main.py index b0698087..bf149925 100644 --- a/main.py +++ b/main.py @@ -6,6 +6,7 @@ from ariadne.asgi import GraphQL from starlette.applications import Starlette from starlette.endpoints import HTTPEndpoint, Request from starlette.responses import JSONResponse +from starlette.routing import Route from resolvers.author import create_author from services.rediscache import redis @@ -46,17 +47,16 @@ class WebhookEndpoint(HTTPEndpoint): if data: auth = request.headers.get("Authorization") if auth: - # TODO: check Authorization header - # Extract user_id and slug - user_id = data["user"]["id"] - email_slug = data["user"]["email"].replace(".", "-").split("@").pop() - slug = data["user"]["preferred_username"] or email_slug - await create_author(user_id, slug) + if auth == os.environ.get("WEBHOOK_SECRET"): + # Extract user_id and slug + user_id = data["user"]["id"] + email_slug = data["user"]["email"].replace(".", "-").split("@").pop() + slug = data["user"]["preferred_username"] or email_slug + await create_author(user_id, slug) return JSONResponse({"status": "success"}) except Exception as e: return JSONResponse({"status": "error", "message": str(e)}, status_code=500) -app = Starlette(debug=True, on_startup=[start_up], on_shutdown=[shutdown]) -app.mount("/", GraphQL(schema, debug=True)) -app.mount("/new-author", WebhookEndpoint) +routes = [Route("/", GraphQL(schema, debug=True)), Route("/new-author", WebhookEndpoint)] +app = Starlette(routes=routes, debug=True, on_startup=[start_up], on_shutdown=[shutdown])