django-axes/axes/middleware.py
Aleksi Häkli 5ab820db6a
Update architecture docs for exception handling
Version 5.0.5 migrated from exceptions to request flagging
which alters the internal behaviour slightly.
2019-05-25 21:12:50 +03:00

35 lines
1.2 KiB
Python

from typing import Callable
from axes.helpers import get_lockout_response
class AxesMiddleware:
"""
Middleware that calculates necessary HTTP request attributes for attempt monitoring
and maps lockout signals into readable HTTP 403 Forbidden responses.
This middleware recognizes a logout monitoring flag in the request and
and uses the ``axes.helpers.get_lockout_response`` handler for returning
customizable and context aware lockout message to the end user if necessary.
To customize the lockout handling behaviour further, you can subclass this middleware
and change the ``__call__`` method to your own liking.
Please see the following configuration flags before customizing this handler:
- ``AXES_LOCKOUT_TEMPLATE``,
- ``AXES_LOCKOUT_URL``,
- ``AXES_COOLOFF_MESSAGE``, and
- ``AXES_PERMALOCK_MESSAGE``.
"""
def __init__(self, get_response: Callable):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
if getattr(request, 'axes_locked_out', None):
response = get_lockout_response(request) # type: ignore
return response