django-defender/defender/middleware.py

27 lines
No EOL
826 B
Python

from django.contrib.auth.views import LoginView
from django.utils.decorators import method_decorator
from .decorators import watch_login
class FailedLoginMiddleware:
""" Failed login middleware """
patched = False
def __init__(self, get_response):
self.get_response = get_response
# Watch the auth login.
# Monkey-patch only once - otherwise we would be recording
# failed attempts multiple times!
if not FailedLoginMiddleware.patched:
our_decorator = watch_login()
watch_login_method = method_decorator(our_decorator)
LoginView.dispatch = watch_login_method(LoginView.dispatch)
FailedLoginMiddleware.patched = True
def __call__(self, request):
response = self.get_response(request)
return response