Ejemplo n.º 1
0
def test_log_out_user(users_table, db_conn):
    """
    Expect to log out as a user.
    """

    create_user_in_db(users_table, db_conn)
    user = User.get(id='abcd1234')
    token = log_in_user(user)
    assert redis.get(token).decode() == 'abcd1234'
    log_out_user({'cookies': {'session_id': token}})
    assert redis.get(token) is None
Ejemplo n.º 2
0
def test_log_in_user(users_table, db_conn):
    """
    Expect to log in as a user.
    """

    create_user_in_db(users_table, db_conn)
    user = get_user({'id': 'abcd1234'}, db_conn)
    token = log_in_user(user)
    assert token
    assert redis.get(token).decode() == 'abcd1234'
Ejemplo n.º 3
0
def test_log_in_user(users_table, db_conn):
    """
    Expect to log in as a user.
    """

    create_user_in_db(users_table, db_conn)
    user = get_user({'id': 'abcd1234'}, db_conn)
    token = log_in_user(user)
    assert token
    assert redis.get(token).decode() == 'abcd1234'
Ejemplo n.º 4
0
def get_learning_context(user):
    """
    Get the learning context of the user.
    """

    key = 'learning_context_{id}'.format(id=user['id'])
    try:
        context = json.loads(redis.get(key).decode())
    except:
        context = {}
    return context
Ejemplo n.º 5
0
def get_current_user(request):
    """
    Get the current user if available, else None.
    """

    cookies = request.get('cookies', {})
    session_id = cookies.get('session_id')
    user_id = redis.get(session_id)
    if user_id:
        user_id = user_id.decode()
        return get_user({'id': user_id}, request['db_conn'])
Ejemplo n.º 6
0
def get_current_user(request):
    """
    Get the current user if available, else None.
    """

    cookies = request.get('cookies', {})
    session_id = cookies.get('session_id')
    user_id = redis.get(session_id)
    if user_id:
        user_id = user_id.decode()
        return User.get(id=user_id)
Ejemplo n.º 7
0
def get_learning_context(user):
    """
    Get the learning context of the user.
    """

    key = 'learning_context_{id}'.format(id=user['id'])
    try:
        context = json.loads(redis.get(key).decode())
    except:
        context = {}
    return context
Ejemplo n.º 8
0
    def get_learning_context(self):
        """
        Get the learning context of the user.
        """

        key = "learning_context_{id}".format(id=self["id"])
        try:
            context = json.loads(redis.get(key).decode())
        except:
            context = {}
        return context
Ejemplo n.º 9
0
def get_current_user(request):
    """
    Get the current user if available, else None.
    """

    cookies = request.get("cookies", {})
    session_id = cookies.get("session_id")
    user_id = redis.get(session_id)
    if user_id:
        user_id = user_id.decode()
        return get_user({"id": user_id}, request["db_conn"])
Ejemplo n.º 10
0
def is_valid_token(user, token):
    """
    Ensure the given token is valid.
    """

    key = 'user_password_token_{id}'.format(id=user['id'])
    entoken = redis.get(key)
    redis.delete(key)
    if entoken:
        entoken = entoken.decode()
        return bcrypt.verify(user['id'] + token, entoken)
    return False
Ejemplo n.º 11
0
def test_get_email_token(db_conn, users_table):
    """
    Expect an email token created so a user can reset their password.
    """

    users_table.insert({"id": "abcd1234", "name": "Dalton", "email": "*****@*****.**", "password": "******"}).run(
        db_conn
    )
    user = get_user({"id": "abcd1234"}, db_conn)
    token = get_email_token(user, send_email=False)
    assert redis.get("user_password_token_abcd1234")
    assert token
Ejemplo n.º 12
0
def is_valid_token(user, token):
    """
    Ensure the given token is valid.
    """

    key = 'user_password_token_{id}'.format(id=user['id'])
    entoken = redis.get(key)
    redis.delete(key)
    if entoken:
        entoken = entoken.decode()
        return bcrypt.verify(user['id'] + token, entoken)
    return False
Ejemplo n.º 13
0
    def is_valid_token(self, token):
        """
        Ensure the given token is valid.
        """

        key = "user_password_token_{id}".format(id=self["id"])
        entoken = redis.get(key)
        redis.delete(key)
        if entoken:
            entoken = entoken.decode()
            return bcrypt.verify(self["id"] + token, entoken)
        return False
Ejemplo n.º 14
0
def test_get_email_token(db_conn, users_table):
    """
    Expect an email token created so a user can reset their password.
    """

    users_table.insert({
        'id': 'abcd1234',
        'name': 'Dalton',
        'email': '*****@*****.**',
        'password': '******',
    }).run(db_conn)
    user = get_user({'id': 'abcd1234'}, db_conn)
    token = get_email_token(user, send_email=False)
    assert redis.get('user_password_token_abcd1234')
    assert token
Ejemplo n.º 15
0
def memoize_redis(key, fn, time=24 * 60 * 60, *args, **kwargs):
    """
    Memoize the results of a function into Redis.
    """

    data = redis.get(key)
    if isinstance(data, bytes):
        try:
            data = json.loads(data.decode())
        except:
            pass

    if data:
        return data

    data = fn(*args, **kwargs)

    redis.setex(key, time, json.dumps(
        data,
        default=json_serial,
        ensure_ascii=False))

    return data