Skip to content

Commit a8f8bd3

Browse files
committed
Prevent deleted users from logging in
1 parent 421094c commit a8f8bd3

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

h/schemas/forms/accounts/login.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def validator(self, node, value):
5454
)
5555
raise err from exc
5656

57-
if user is None:
57+
if user is None or user.deleted:
5858
err = colander.Invalid(node)
5959
err["username"] = _("User does not exist.")
6060
raise err

tests/unit/h/schemas/forms/accounts/login_test.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,19 @@ def test_invalid_with_inactive_user(self, pyramid_csrf_request, user_service):
6363
assert "username" in errors
6464
assert "activate your account" in errors["username"]
6565

66+
def test_invalid_with_deleted_user(
67+
self, pyramid_csrf_request, user_service, factories
68+
):
69+
schema = LoginSchema().bind(request=pyramid_csrf_request)
70+
user_service.fetch_for_login.return_value = factories.User.build(deleted=True)
71+
72+
with pytest.raises(colander.Invalid) as exc:
73+
schema.deserialize({"username": "jeannie", "password": "cake"})
74+
75+
errors = exc.value.asdict()
76+
assert "username" in errors
77+
assert "does not exist" in errors["username"]
78+
6679
def test_invalid_with_unknown_user(self, pyramid_csrf_request, user_service):
6780
schema = LoginSchema().bind(request=pyramid_csrf_request)
6881
user_service.fetch_for_login.return_value = None

0 commit comments

Comments
 (0)