12ff4b107c
Basing sessions on UUIDs must be done in phases. First all users must obtain an UUID. Once a backfill has given all previous users UUIDs and new users are being generated with UUIDs, then we can actually change the session to be based on that value.
54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
import logging
|
|
|
|
from flask import _request_ctx_stack
|
|
from data import model
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def get_authenticated_user():
|
|
user = getattr(_request_ctx_stack.top, 'authenticated_user', None)
|
|
if not user:
|
|
db_id = getattr(_request_ctx_stack.top, 'authenticated_db_id', None)
|
|
if not db_id:
|
|
logger.debug('No authenticated user or deferred database id.')
|
|
return None
|
|
|
|
logger.debug('Loading deferred authenticated user.')
|
|
loaded = model.get_user_by_id(db_id)
|
|
set_authenticated_user(loaded)
|
|
user = loaded
|
|
|
|
if user:
|
|
logger.debug('Returning authenticated user: %s', user.username)
|
|
return user
|
|
|
|
|
|
def set_authenticated_user(user_or_robot):
|
|
ctx = _request_ctx_stack.top
|
|
ctx.authenticated_user = user_or_robot
|
|
|
|
|
|
def set_authenticated_user_deferred(user_or_robot_db_id):
|
|
logger.debug('Deferring loading of authenticated user object with id: %s', user_or_robot_db_id)
|
|
ctx = _request_ctx_stack.top
|
|
ctx.authenticated_db_id = user_or_robot_db_id
|
|
|
|
|
|
def get_validated_oauth_token():
|
|
return getattr(_request_ctx_stack.top, 'validated_oauth_token', None)
|
|
|
|
|
|
def set_validated_oauth_token(token):
|
|
ctx = _request_ctx_stack.top
|
|
ctx.validated_oauth_token = token
|
|
|
|
|
|
def get_validated_token():
|
|
return getattr(_request_ctx_stack.top, 'validated_token', None)
|
|
|
|
|
|
def set_validated_token(token):
|
|
ctx = _request_ctx_stack.top
|
|
ctx.validated_token = token
|