about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gn2/wqflask/oauth2/toplevel.py38
1 files changed, 21 insertions, 17 deletions
diff --git a/gn2/wqflask/oauth2/toplevel.py b/gn2/wqflask/oauth2/toplevel.py
index a1e9196d..6b3db201 100644
--- a/gn2/wqflask/oauth2/toplevel.py
+++ b/gn2/wqflask/oauth2/toplevel.py
@@ -26,23 +26,6 @@ def register_client():
 @toplevel.route("/code", methods=["GET"])
 def authorisation_code():
     """Use authorisation code to get token."""
-    def __error__(error):
-        flash(f"{error['error']}: {error['error_description']}",
-              "alert-danger")
-        return redirect("/")
-
-    def __success__(token):
-        session.set_user_token(token)
-        udets = user_details()
-        session.set_user_details({
-            "user_id": uuid.UUID(udets["user_id"]),
-            "name": udets["name"],
-            "email": udets["email"],
-            "token": session.user_token(),
-            "logged_in": True
-        })
-        return redirect("/")
-
     code = request.args.get("code", "")
     if bool(code):
         base_url = urlparse(request.base_url, scheme=request.scheme)
@@ -71,6 +54,27 @@ def authorisation_code():
                 key=jwtkey),
             "client_id": app.config["OAUTH2_CLIENT_ID"]
         }
+
+        def __error__(error):
+            flash(f"{error['error']}: {error['error_description']}",
+                  "alert-danger")
+            app.logger.debug("Request error (%s) %s: %s",
+                             error["status_code"], error["error_description"],
+                             request_data)
+            return redirect("/")
+
+        def __success__(token):
+            session.set_user_token(token)
+            udets = user_details()
+            session.set_user_details({
+                "user_id": uuid.UUID(udets["user_id"]),
+                "name": udets["name"],
+                "email": udets["email"],
+                "token": session.user_token(),
+                "logged_in": True
+            })
+            return redirect("/")
+
         return no_token_post(
             "auth/token", data=request_data).either(
                 lambda err: __error__(process_error(err)), __success__)