Skip to content

Commit 21cdc96

Browse files
woodruffwewdurbin
authored andcommitted
Require login after a successful password reset (#5938)
* warehouse: Require login after password reset Instead of treating a successful reset as a login and bypassing the user's second factors, redirect to the login page. * tests: Update password reset tests * tests: Auto-format
1 parent 2472619 commit 21cdc96

File tree

2 files changed

+6
-10
lines changed

2 files changed

+6
-10
lines changed

tests/unit/accounts/test_views.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -952,7 +952,7 @@ def test_reset_password(self, db_request, user_service, token_service):
952952

953953
breach_service = pretend.stub(check_password=lambda pw: False)
954954

955-
db_request.route_path = pretend.call_recorder(lambda name: "/")
955+
db_request.route_path = pretend.call_recorder(lambda name: "/account/login")
956956
token_service.loads = pretend.call_recorder(
957957
lambda token: {
958958
"action": "password-reset",
@@ -977,7 +977,7 @@ def test_reset_password(self, db_request, user_service, token_service):
977977
result = views.reset_password(db_request, _form_class=form_class)
978978

979979
assert isinstance(result, HTTPSeeOther)
980-
assert result.headers["Location"] == "/"
980+
assert result.headers["Location"] == "/account/login"
981981
assert form_obj.validate.calls == [pretend.call()]
982982
assert form_class.calls == [
983983
pretend.call(
@@ -989,11 +989,10 @@ def test_reset_password(self, db_request, user_service, token_service):
989989
breach_service=breach_service,
990990
)
991991
]
992-
assert db_request.route_path.calls == [pretend.call("index")]
992+
assert db_request.route_path.calls == [pretend.call("accounts.login")]
993993
assert token_service.loads.calls == [pretend.call("RANDOM_KEY")]
994994
assert user_service.update_user.calls == [
995-
pretend.call(user.id, password=form_obj.new_password.data),
996-
pretend.call(user.id, last_login=now),
995+
pretend.call(user.id, password=form_obj.new_password.data)
997996
]
998997
assert db_request.session.flash.calls == [
999998
pretend.call("You have reset your password", queue="success")
@@ -1002,7 +1001,6 @@ def test_reset_password(self, db_request, user_service, token_service):
10021001
pretend.call(IUserService, context=None),
10031002
pretend.call(IPasswordBreachedService, context=None),
10041003
pretend.call(ITokenService, name="password"),
1005-
pretend.call(IUserService, context=None),
10061004
]
10071005

10081006
@pytest.mark.parametrize(

warehouse/accounts/views.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -437,10 +437,8 @@ def _error(message):
437437
# Flash a success message
438438
request.session.flash("You have reset your password", queue="success")
439439

440-
# Perform login just after reset password and redirect to default view.
441-
return HTTPSeeOther(
442-
request.route_path("index"), headers=dict(_login_user(request, user.id))
443-
)
440+
# Redirect to account login.
441+
return HTTPSeeOther(request.route_path("accounts.login"))
444442

445443
return {"form": form}
446444

0 commit comments

Comments
 (0)