diff --git a/apps/authentication/mixins.py b/apps/authentication/mixins.py index 5355d79bd..14e5fd35f 100644 --- a/apps/authentication/mixins.py +++ b/apps/authentication/mixins.py @@ -225,6 +225,7 @@ class MFAMixin: self.request.session['auth_mfa_time'] = time.time() self.request.session['auth_mfa_required'] = 0 self.request.session['auth_mfa_type'] = mfa_type + MFABlockUtils(self.request.user.username, self.get_request_ip()).clean_failed_count() def clean_mfa_mark(self): keys = ['auth_mfa', 'auth_mfa_time', 'auth_mfa_required', 'auth_mfa_type'] diff --git a/apps/authentication/views/mfa.py b/apps/authentication/views/mfa.py index fd8b80e32..c297a3261 100644 --- a/apps/authentication/views/mfa.py +++ b/apps/authentication/views/mfa.py @@ -32,11 +32,14 @@ class UserLoginMFAView(mixins.AuthMixin, FormView): return super().get(*args, **kwargs) def form_valid(self, form): + from users.utils import MFABlockUtils code = form.cleaned_data.get('code') mfa_type = form.cleaned_data.get('mfa_type') try: self._do_check_user_mfa(code, mfa_type) + user, ip = self.get_user_from_session(), self.get_request_ip() + MFABlockUtils(user.username, ip).clean_failed_count() return redirect_to_guard_view('mfa_ok') except (errors.MFAFailedError, errors.BlockMFAError) as e: form.add_error('code', e.msg)