diff options
author | 2022-03-20 17:25:06 -0400 | |
---|---|---|
committer | 2022-03-20 17:25:06 -0400 | |
commit | 25fce5e0161c2d84d4a6b710aa5c83a863766f98 (patch) | |
tree | e3c15dad453f8d518bbf5335a14eddedf2c2d054 /backend/routes/forms/response.py | |
parent | Merge pull request #151 from python-discord/dependabot/pip/sentry-sdk-1.5.7 (diff) | |
parent | Merge branch 'main' into roles (diff) |
Merge pull request #135 from python-discord/roles
Overhaul Access System
Diffstat (limited to 'backend/routes/forms/response.py')
-rw-r--r-- | backend/routes/forms/response.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/backend/routes/forms/response.py b/backend/routes/forms/response.py index d8d8d17..565701f 100644 --- a/backend/routes/forms/response.py +++ b/backend/routes/forms/response.py @@ -1,11 +1,13 @@ """ Returns or deletes form response by ID. """ + from spectree import Response as RouteResponse from starlette.authentication import requires from starlette.requests import Request from starlette.responses import JSONResponse +from backend import discord from backend.models import FormResponse from backend.route import Route from backend.validation import ErrorMessage, OkayResponse, api @@ -17,23 +19,26 @@ class Response(Route): name = "response" path = "/{form_id:str}/responses/{response_id:str}" - @requires(["authenticated", "admin"]) + @requires(["authenticated"]) @api.validate( resp=RouteResponse(HTTP_200=FormResponse, HTTP_404=ErrorMessage), tags=["forms", "responses"] ) async def get(self, request: Request) -> JSONResponse: """Return a single form response by ID.""" + form_id = request.path_params["form_id"] + await discord.verify_response_access(form_id, request) + if raw_response := await request.state.db.responses.find_one( { "_id": request.path_params["response_id"], - "form_id": request.path_params["form_id"] + "form_id": form_id } ): response = FormResponse(**raw_response) return JSONResponse(response.dict()) else: - return JSONResponse({"error": "not_found"}, status_code=404) + return JSONResponse({"error": "response_not_found"}, status_code=404) @requires(["authenticated", "admin"]) @api.validate( |