Update django request in the AxesMiddleware if drf is used

This commit is contained in:
Anatoly 2020-10-07 15:45:29 +02:00 committed by Aleksi Häkli
parent 1c40eae305
commit ae49f3bdae

View file

@ -1,6 +1,15 @@
from typing import Callable
from axes.helpers import get_lockout_response
from django.conf import settings
from axes.helpers import (
get_lockout_response,
get_failure_limit,
get_client_username,
get_credentials,
)
from axes.handlers.proxy import AxesProxyHandler
class AxesMiddleware:
@ -29,6 +38,21 @@ 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)
):
request.axes_locked_out = True
if getattr(request, "axes_locked_out", None):
response = get_lockout_response(request) # type: ignore