diff options
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"] |
