diff --git a/hypha/apply/users/urls.py b/hypha/apply/users/urls.py index 2fd5ff936cf1fa11cb01ccab2aad009889fbae91..d5a68b52b49d8d8ba64729ddea9f8f4a718a5016 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 037502f1271f56f04f752c114f6599f8b2397ee9..f67c9776ac66e7ec72bf3811463458b906ed86ac 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'