Only do the work in the middleware if axes is enabled.

This commit is contained in:
Ashok Argent-Katwala 2020-11-18 16:18:48 -05:00 committed by Aleksi Häkli
parent 23ca162097
commit 146d7a20b7
2 changed files with 22 additions and 12 deletions

View file

@ -42,19 +42,20 @@ class AxesMiddleware:
def __call__(self, request):
response = self.get_response(request)
if "rest_framework" in settings.INSTALLED_APPS:
AxesProxyHandler.update_request(request)
username = get_client_username(request)
credentials = get_credentials(username)
failures_since_start = AxesProxyHandler.get_failures(request, credentials)
if (
settings.AXES_LOCK_OUT_AT_FAILURE
and failures_since_start >= get_failure_limit(request, credentials)
):
if settings.AXES_ENABLED:
if "rest_framework" in settings.INSTALLED_APPS:
AxesProxyHandler.update_request(request)
username = get_client_username(request)
credentials = get_credentials(username)
failures_since_start = AxesProxyHandler.get_failures(request, credentials)
if (
settings.AXES_LOCK_OUT_AT_FAILURE
and failures_since_start >= get_failure_limit(request, credentials)
):
request.axes_locked_out = True
request.axes_locked_out = True
if getattr(request, "axes_locked_out", None):
response = get_lockout_response(request) # type: ignore
if getattr(request, "axes_locked_out", None):
response = get_lockout_response(request) # type: ignore
return response

View file

@ -31,6 +31,15 @@ class MiddlewareTestCase(AxesTestCase):
response = AxesMiddleware(get_response)(self.request)
self.assertEqual(response.status_code, self.STATUS_LOCKOUT)
@override_settings(AXES_ENABLED=False)
def test_respects_enabled_switch(self):
def get_response(request):
request.axes_locked_out = True
return HttpResponse()
response = AxesMiddleware(get_response)(self.request)
self.assertEqual(response.status_code, self.STATUS_SUCCESS)
@mock.patch("django.conf.settings.INSTALLED_APPS", ["rest_framework"])
def test_response_contains_required_attrs_with_drf_integration(self):
def get_response(request):