Django Интеграция существующего кода в представление на основе общего класса с двухфакторной аутентификацией

У меня есть следующий вид входа в систему:

      @axes_dispatch
@check_recaptcha_login
def loginpage(request, credentials: dict = None):
    form = RegisterForm()
    attempts_list = get_user_attempts(request, credentials)

    attempt_count = max(
        (
                attempts.aggregate(Sum("failures_since_start"))[
                    "failures_since_start__sum"
                ]
                or 0
        )
        for attempts in attempts_list
    )
    #print(attempt_count)

    attempt_count = attempt_count

    context = {'attempt_count': attempt_count}


    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')

        user = authenticate(request, username=username, password=password)

        if user is not None:

            if user.is_active and attempt_count < 3:
                login(request, user)
                return redirect('home')

            elif user.is_active and request.recaptcha_is_valid:
                login(request, user)
                return redirect('home')

            if not user.is_active:
                messages.error(request, 'Account for this User has not been Activated.')
        else:
            messages.error(request, 'Username or Password is Incorrect.')

    #print(context)
    return render(request, 'login.html', context)

Но теперь я использую двухфакторные представления аутентификации django и хотел бы интегрировать декораторы и код подсчета попыток и контекст, а также попытки входа в систему, если пользователь не является None :) в моем приведенном выше коде с представлением на основе класса LoginView из следующего ссылка: https://github.com/Bouke/django-two-factor-auth/blob/master/two_factor/views/core.py

Я считаю, что мне нужно изменить свое собственное представление входа в систему, чтобы вызвать loginView, указанный в ссылке выше, и добавить в представление мои декораторы и мой собственный код, упомянутый выше, но не знаю, как это сделать. Помощь очень ценится. Спасибо

0 ответов

Другие вопросы по тегам