diff options
| author | Frederick Muriuki Muriithi | 2026-01-08 11:02:02 -0600 |
|---|---|---|
| committer | Frederick Muriuki Muriithi | 2026-01-08 11:02:02 -0600 |
| commit | d93d98802dff81487eaf56ddd8446d51bef6f992 (patch) | |
| tree | e4ed91329793dbdf9555d9db16a9c20b09b1ccef /uploader/session.py | |
| parent | ee40f1a1212118db155b9b5964de2c5268ec20f2 (diff) | |
| download | gn-uploader-d93d98802dff81487eaf56ddd8446d51bef6f992.tar.gz | |
Bug: Move, and fix fetching of logged in user's ID.
Diffstat (limited to 'uploader/session.py')
| -rw-r--r-- | uploader/session.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/uploader/session.py b/uploader/session.py index 5af5827..9cb305b 100644 --- a/uploader/session.py +++ b/uploader/session.py @@ -1,4 +1,5 @@ """Deal with user sessions""" +import logging from uuid import UUID, uuid4 from datetime import datetime from typing import Any, Optional, TypedDict @@ -7,6 +8,8 @@ from authlib.jose import KeySet from flask import request, session from pymonad.either import Left, Right, Either +logger = logging.getLogger(__name__) + class UserDetails(TypedDict): """Session information relating specifically to the user.""" @@ -91,6 +94,17 @@ def user_details() -> UserDetails: """Retrieve user details.""" return session_info()["user"] + +def logged_in_user_id() -> Optional[UUID]: + """Get user id for logged in user. If user has not logged in, return None.""" + return user_token().then( + lambda _tok: user_details() + ).then( + lambda _user: Either(_user["user_id"], + (None, _user["email"] != "anon@ymous.user")) + ).either(lambda _err: None, lambda uid: uid) + + def user_token() -> Either: """Retrieve the user token.""" return session_info()["user"]["token"] |
