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
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'
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
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'])
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)
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
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"])
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
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
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
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
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