From feb798140af684e724acb0cfcaca8626973eccfb Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Tue, 22 Dec 2020 14:23:47 +0200 Subject: Create route for adding new admins --- backend/routes/admin.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 backend/routes/admin.py (limited to 'backend') diff --git a/backend/routes/admin.py b/backend/routes/admin.py new file mode 100644 index 0000000..ef01fbd --- /dev/null +++ b/backend/routes/admin.py @@ -0,0 +1,31 @@ +""" +Adds new admin user. +""" +from spectree import Response +from starlette.authentication import requires +from starlette.requests import Request +from starlette.responses import JSONResponse + +from backend.route import Route +from backend.validation import ErrorMessage, OkayResponse, api + + +class AdminRoute(Route): + """Adds new admin user.""" + + name = "admin" + path = "/admin" + + @requires(["authenticated", "admin"]) + @api.validate( + resp=Response(HTTP_200=OkayResponse, HTTP_400=ErrorMessage), + tags=["admin"] + ) + async def post(self, request: Request) -> JSONResponse: + """Inserts new administrator user to DB.""" + data = await request.json() + if "id" not in data: + return JSONResponse({"error": "missing_id"}, status_code=400) + + await request.state.db.admins.insert_one({"_id": str(data["id"])}) + return JSONResponse({"status": "ok"}) -- cgit v1.2.3