diff --git a/src/newsreader/accounts/urls.py b/src/newsreader/accounts/urls.py index c5b9944..5784b7f 100644 --- a/src/newsreader/accounts/urls.py +++ b/src/newsreader/accounts/urls.py @@ -10,7 +10,6 @@ from two_factor.views import ( ProfileView, QRGeneratorView, SetupCompleteView, - SetupView, ) from newsreader.accounts.views import ( @@ -33,6 +32,7 @@ from newsreader.accounts.views import ( RegistrationCompleteView, RegistrationView, SettingsView, + SetupView, TwitterAuthRedirectView, TwitterRevokeRedirectView, TwitterTemplateView, diff --git a/src/newsreader/accounts/views/__init__.py b/src/newsreader/accounts/views/__init__.py index 3be2b81..5ff5c61 100644 --- a/src/newsreader/accounts/views/__init__.py +++ b/src/newsreader/accounts/views/__init__.py @@ -1,4 +1,4 @@ -from newsreader.accounts.views.auth import LoginView, LogoutView +from newsreader.accounts.views.auth import LoginView, LogoutView, SetupView from newsreader.accounts.views.favicon import FaviconRedirectView from newsreader.accounts.views.integrations import ( IntegrationsView, diff --git a/src/newsreader/accounts/views/auth.py b/src/newsreader/accounts/views/auth.py index 8ec2895..addea11 100644 --- a/src/newsreader/accounts/views/auth.py +++ b/src/newsreader/accounts/views/auth.py @@ -1,17 +1,30 @@ from django.contrib.auth import views as django_views +from django.shortcuts import redirect from django.urls import reverse_lazy from two_factor.views.core import LoginView as TwoFactorLoginView +from two_factor.views.core import SetupView as TwoFactorSetupView class LoginView(TwoFactorLoginView): redirect_authenticated_user = True template_name = "accounts/views/login.html" - def post(self, *args, **kwargs): - print(self.request.POST) - return super().post(*args, **kwargs) + def done(self, form_list, **kwargs): + response = super().done(form_list, **kwargs) + + user = self.get_user() + + if not user.phonedevice_set.exists(): + return redirect("accounts:two_factor:setup") + + return response class LogoutView(django_views.LogoutView): next_page = reverse_lazy("accounts:login") + + +class SetupView(TwoFactorSetupView): + success_url = "accounts:two_factor:setup_complete" + qrcode_url = "accounts:two_factor:qr"