about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--uploader/oauth2/client.py16
-rw-r--r--uploader/oauth2/views.py9
2 files changed, 18 insertions, 7 deletions
diff --git a/uploader/oauth2/client.py b/uploader/oauth2/client.py
index 1efa299..12fbf80 100644
--- a/uploader/oauth2/client.py
+++ b/uploader/oauth2/client.py
@@ -1,6 +1,7 @@
 """OAuth2 client utilities."""
 import json
 import time
+import uuid
 import random
 from datetime import datetime, timedelta
 from urllib.parse import urljoin, urlparse
@@ -146,9 +147,24 @@ def oauth2_client():
         __client__)
 
 
+def fetch_user_details() -> Either:
+    """Retrieve user details from the auth server"""
+    suser = session.session_info()["user"]
+    if suser["email"] == "anon@ymous.user":
+        udets = oauth2_get("auth/user/").then(
+            lambda usrdets: session.set_user_details({
+                "user_id": uuid.UUID(usrdets["user_id"]),
+                "name": usrdets["name"],
+                "email": usrdets["email"],
+                "token": session.user_token()}))
+        return udets
+    return Right(suser)
+
+
 def user_logged_in():
     """Check whether the user has logged in."""
     suser = session.session_info()["user"]
+    fetch_user_details()
     return suser["logged_in"] and suser["token"].is_right()
 
 
diff --git a/uploader/oauth2/views.py b/uploader/oauth2/views.py
index a7211cb..aef2d35 100644
--- a/uploader/oauth2/views.py
+++ b/uploader/oauth2/views.py
@@ -24,6 +24,7 @@ from .client import (
     user_logged_in,
     authserver_uri,
     oauth2_clientid,
+    fetch_user_details,
     oauth2_clientsecret)
 
 oauth2 = Blueprint("oauth2", __name__)
@@ -48,13 +49,7 @@ def authorisation_code():
 
     def __success__(token):
         session.set_user_token(token)
-        return oauth2_get("auth/user/").then(
-            lambda usrdets: session.set_user_details({
-                "user_id": uuid.UUID(usrdets["user_id"]),
-                "name": usrdets["name"],
-                "email": usrdets["email"],
-                "token": session.user_token(),
-                "logged_in": True})).either(
+        return fetch_user_details().either(
                     __fail_set_user_details__,
                     __success_set_user_details__)