aboutsummaryrefslogtreecommitdiffstats
path: root/backend/routes
diff options
context:
space:
mode:
authorGravatar Hassan Abouelela <[email protected]>2021-06-20 06:37:34 +0300
committerGravatar GitHub <[email protected]>2021-06-20 06:37:34 +0300
commitb3278739ef8f1d9f6079e399ad71cffc04ca1d67 (patch)
tree9aa10981f78104863f09a8aabfdf9b38c758d4fc /backend/routes
parentHandles Null Webhooks (diff)
parentAdds An Empty Form For Authorization (diff)
Merge pull request #90 from python-discord/auth-form
Empty Authorization Form
Diffstat (limited to 'backend/routes')
-rw-r--r--backend/routes/forms/discover.py33
-rw-r--r--backend/routes/forms/form.py9
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"])