From 603eaac4f761ee0fc57b5230b1f3b5d5ef8cfb12 Mon Sep 17 00:00:00 2001
From: sandeepsajan0 <sandeepsajan0@gmail.com>
Date: Wed, 25 May 2022 18:35:02 +0530
Subject: [PATCH] Update Backuptoken passwordform view and add custom setup
 view

---
 hypha/apply/users/urls.py  | 2 ++
 hypha/apply/users/views.py | 8 +++++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/hypha/apply/users/urls.py b/hypha/apply/users/urls.py
index 2fd5ff936..d5a68b52b 100644
--- a/hypha/apply/users/urls.py
+++ b/hypha/apply/users/urls.py
@@ -13,6 +13,7 @@ from .views import (
     TWOFABackupTokensPasswordView,
     TWOFADisableView,
     TWOFARequiredMessageView,
+    TWOFASetupView,
     become,
     create_password,
     oauth,
@@ -87,6 +88,7 @@ urlpatterns = [
         ),
         # Two factor redirect
         path('two_factor/required/', TWOFARequiredMessageView.as_view(), name='two_factor_required'),
+        path('two_factor/setup/', TWOFASetupView.as_view(), name="two_factor_setup"),
         path('two_factor/backup_tokens/password/', TWOFABackupTokensPasswordView.as_view(), name='backup_tokens_password'),
         path('two_factor/disable/', TWOFADisableView.as_view(), name='disable'),
         path('two_factor/admin/disable/<str:user_id>/', TWOFAAdminDisableView.as_view(), name='admin_disable'),
diff --git a/hypha/apply/users/views.py b/hypha/apply/users/views.py
index 037502f12..f67c9776a 100644
--- a/hypha/apply/users/views.py
+++ b/hypha/apply/users/views.py
@@ -24,6 +24,8 @@ from hijack.views import AcquireUserView
 from two_factor.forms import AuthenticationTokenForm, BackupTokenForm
 from two_factor.views import DisableView as TwoFactorDisableView
 from two_factor.views import LoginView as TwoFactorLoginView
+from two_factor.views import SetupView as TwoFactorSetupView
+from two_factor.views import BackupTokensView as TwoFactorBackupTokensView
 from two_factor.utils import default_device
 from wagtail.admin.views.account import password_management_enabled
 from wagtail.core.models import Site
@@ -284,7 +286,7 @@ def create_password(request):
 
 
 @method_decorator(login_required, name='dispatch')
-class TWOFABackupTokensPasswordView(FormView):
+class TWOFABackupTokensPasswordView(TwoFactorBackupTokensView):
     """
     Require password to see backup codes
     """
@@ -349,5 +351,9 @@ class TWOFAAdminDisableView(FormView):
         return ctx
 
 
+class TWOFASetupView(TwoFactorSetupView):
+    success_url = "users:backup_tokens_password"
+
+
 class TWOFARequiredMessageView(TemplateView):
     template_name = 'two_factor/core/two_factor_required.html'
-- 
GitLab