Esempio n. 1
0
def test_log_out_user(db_conn):
    """
  Expect to log out as a user.
  """

    create_user_in_db(db_conn)
    user = get_user(db_conn, {'id': user_id})
    token = log_in_user(user)
    assert red.get(token).decode() == convert_uuid_to_slug(user_id)
    log_out_user({
        'cookies': {
            'session_id': token
        },
        'db_conn': db_conn,
    })
    assert red.get(token) is None
Esempio n. 2
0
def get_current_user_id(request):
  """
  Get the current user if available, else None.
  """

  cookies = request.get('cookies', {})
  session_id = cookies.get('session_id')
  user_id = red.get(session_id)
  if user_id:
    return user_id.decode()
Esempio n. 3
0
def test_log_in_user(db_conn):
    """
  Expect to log in as a user.
  """

    create_user_in_db(db_conn)
    user = get_user(db_conn, {'id': user_id})
    token = log_in_user(user)
    assert token
    assert red.get(token).decode() == convert_uuid_to_slug(user_id)
Esempio n. 4
0
def get_learning_context(user):
    """
  Get the learning context of the user.
  """

    key = 'learning_context_{id}'.format(id=convert_uuid_to_slug(user['id']))
    try:
        context = json.loads(red.get(key).decode())
    except:
        context = {}
    return context
Esempio n. 5
0
def is_valid_token(user, token):
    """
  Ensure the given token is valid.
  """

    slugged_user_id = convert_uuid_to_slug(user['id'])
    key = 'user_password_token_{id}'.format(id=slugged_user_id)
    entoken = red.get(key)
    red.delete(key)
    if entoken:
        entoken = entoken.decode()
        return bcrypt.verify(slugged_user_id + token, entoken)
    return False
def memoize_redis(key, fnn, time=24 * 60 * 60, *args, **kwargs):
  """
  Memoize the results of a function into Redis.
  """

  data = red.get(key)
  if isinstance(data, bytes):
    try:
      data = json.loads(data.decode())
    except:
      pass
  if data:
    return data
  data = fnn(*args, **kwargs)
  red.setex(key, time, json.dumps(
    data,
    default=json_serial,
    ensure_ascii=False
  ))
  return data