diff options
author | 2021-06-20 06:37:34 +0300 | |
---|---|---|
committer | 2021-06-20 06:37:34 +0300 | |
commit | b3278739ef8f1d9f6079e399ad71cffc04ca1d67 (patch) | |
tree | 9aa10981f78104863f09a8aabfdf9b38c758d4fc /backend/routes/forms | |
parent | Handles Null Webhooks (diff) | |
parent | Adds An Empty Form For Authorization (diff) |
Merge pull request #90 from python-discord/auth-form
Empty Authorization Form
Diffstat (limited to 'backend/routes/forms')
-rw-r--r-- | backend/routes/forms/discover.py | 33 | ||||
-rw-r--r-- | backend/routes/forms/form.py | 9 |
2 files changed, 37 insertions, 5 deletions
diff --git a/backend/routes/forms/discover.py b/backend/routes/forms/discover.py index c4711aa..d7351d5 100644 --- a/backend/routes/forms/discover.py +++ b/backend/routes/forms/discover.py @@ -5,10 +5,33 @@ from spectree.response import Response from starlette.requests import Request from starlette.responses import JSONResponse -from backend.models import Form, FormList +from backend import constants +from backend.models import Form, FormList, Question from backend.route import Route from backend.validation import api +__FEATURES = [ + constants.FormFeatures.DISCOVERABLE.value, + constants.FormFeatures.OPEN.value, + constants.FormFeatures.REQUIRES_LOGIN.value +] + +__QUESTION = Question( + id="description", + name="Check your cookies after pressing the button.", + type="section", + data={"text": "You can find cookies under \"Application\" in dev tools."}, + required=False +) + +EMPTY_FORM = Form( + id="empty_auth", + features=__FEATURES, + questions=[__QUESTION], + name="Auth form", + description="An empty form to help you get a token." +) + class DiscoverableFormsList(Route): """ @@ -31,6 +54,8 @@ class DiscoverableFormsList(Route): forms = [form.dict(admin=False) for form in forms] - return JSONResponse( - forms - ) + # Return an empty form in development environments to help with authentication. + if not forms and not constants.PRODUCTION: + forms.append(EMPTY_FORM.dict(admin=False)) + + return JSONResponse(forms) diff --git a/backend/routes/forms/form.py b/backend/routes/forms/form.py index 4aa940b..3ea3acb 100644 --- a/backend/routes/forms/form.py +++ b/backend/routes/forms/form.py @@ -10,8 +10,10 @@ from starlette.authentication import requires from starlette.requests import Request from starlette.responses import JSONResponse +from backend import constants from backend.models import Form from backend.route import Route +from backend.routes.forms.discover import EMPTY_FORM from backend.routes.forms.unittesting import filter_unittests from backend.validation import ErrorMessage, OkayResponse, api @@ -30,9 +32,10 @@ class SingleForm(Route): async def get(self, request: Request) -> JSONResponse: """Returns single form information by ID.""" admin = request.user.admin if request.user.is_authenticated else False + form_id = request.path_params["form_id"] filters = { - "_id": request.path_params["form_id"] + "_id": form_id } if not admin: @@ -45,6 +48,10 @@ class SingleForm(Route): return JSONResponse(form.dict(admin=admin)) + elif not constants.PRODUCTION and form_id == EMPTY_FORM.id: + # Empty form to help with authentication in development. + return JSONResponse(EMPTY_FORM.dict(admin=admin)) + return JSONResponse({"error": "not_found"}, status_code=404) @requires(["authenticated", "admin"]) |