Skip to content

Commit

Permalink
Exception is raised when LOGIN_FAILURE_LIMIT is reached for user that…
Browse files Browse the repository at this point in the history
… doesn't exit

Fixes #25
  • Loading branch information
Tamas Szabo committed Aug 11, 2017
1 parent c8ec941 commit 063d234
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
6 changes: 3 additions & 3 deletions useraudit/backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,15 @@ def authenticate(self, **credentials):
UserModel = get_user_model()
self.username = credentials.get(UserModel.USERNAME_FIELD)
self.login_logger.log_failed_login(self.username, get_request())
self.login_attempt_logger.increment(self.username)
self.block_user_if_needed()
if self._get_user() is not None:
self.login_attempt_logger.increment(self.username)
self.block_user_if_needed()

return None

def block_user_if_needed(self):
if not self.is_login_failure_limit_enabled():
return
logger.debug("Login failure limit is enabled")
if self.is_attempts_exceeded():
self._deactivate_user()
user = self._get_user()
Expand Down
10 changes: 9 additions & 1 deletion useraudit_testapp/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -409,12 +409,20 @@ def test_user_deactivation_saved_when_login_failure_limit_reached(self):
self.assertIsNotNone(ud)
self.assertEquals(ud.reason, UserDeactivation.TOO_MANY_FAILED_LOGINS)

def test_user_deactivation_NOT_saved_when_login_failure_limit_reached_but_username_does_NOT_exist(self):
username = 'doesnotexit'
_ = authenticate(username=username, password="INCORRECT")
_ = authenticate(username=username, password="INCORRECT")
u = authenticate(username=username, password=self.password)
uds = UserDeactivation.objects.filter(username=username).count()
self.assertIsNone(u)
self.assertEquals(uds, 0)

def test_failure_counter_reset_when_reactivated(self):
_ = authenticate(username=self.username, password="INCORRECT")
_ = authenticate(username=self.username, password="INCORRECT")
_ = authenticate(username=self.username, password="INCORRECT")
# User is inactive now

# Reactivate user
self.user.is_active = True
self.user.save()
Expand Down

0 comments on commit 063d234

Please sign in to comment.