mirror of
https://github.com/jazzband/django-axes.git
synced 2026-05-16 03:23:11 +00:00
Update django request in the AxesMiddleware if drf is used
This commit is contained in:
parent
1c40eae305
commit
ae49f3bdae
1 changed files with 25 additions and 1 deletions
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue