From d84a0acd6f80267de20575966149d074f10ad862 Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Sat, 5 Apr 2025 09:17:35 -0500 Subject: Fix fetching of user details. Move the fetching of user details to the client module. Add checks to only fetch the details if they are not updated yet. --- uploader/oauth2/client.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'uploader/oauth2/client.py') 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() -- cgit v1.2.3