diff --git a/app/dao/users_dao.py b/app/dao/users_dao.py index 6654234a5..491d05fea 100644 --- a/app/dao/users_dao.py +++ b/app/dao/users_dao.py @@ -103,3 +103,10 @@ def reset_failed_login_count(user): user.failed_login_count = 0 db.session.add(user) db.session.commit() + + +def update_user_password(user, password): + user.password = password + user.password_changed_at = datetime.utcnow() + db.session.add(user) + db.session.commit() diff --git a/tests/app/dao/test_users_dao.py b/tests/app/dao/test_users_dao.py index 6b4b982b7..e18ef6b79 100644 --- a/tests/app/dao/test_users_dao.py +++ b/tests/app/dao/test_users_dao.py @@ -14,6 +14,7 @@ from app.dao.users_dao import ( reset_failed_login_count, get_user_by_email, delete_codes_older_created_more_than_a_day_ago, + update_user_password ) from app.models import User, VerifyCode @@ -132,3 +133,10 @@ def test_update_user_attribute(client, sample_user, user_attribute, user_value): } save_user_attribute(sample_user, update_dict) assert getattr(sample_user, user_attribute) == user_value + + +def test_update_user_password(notify_api, notify_db, notify_db_session, sample_user): + password = 'newpassword' + assert not sample_user.check_password(password) + update_user_password(sample_user, password) + assert sample_user.check_password(password)