about summary refs log tree commit diff
path: root/uploader/session.py
diff options
context:
space:
mode:
Diffstat (limited to 'uploader/session.py')
-rw-r--r--uploader/session.py14
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"]