kumidc/frontend/views/otp.py
2022-08-04 13:15:10 +02:00

47 lines
1.6 KiB
Python

from django.contrib.auth.views import LoginView
from django.contrib import messages
from django.http import HttpResponseRedirect
from django.views.generic import RedirectView
from django.urls import reverse_lazy
from authentication.forms.otp import TOTPLoginForm
from authentication.mixins.timeout import TimeoutMixin
from ..mixins.views import TitleMixin
class TOTPActivationView(TitleMixin, TimeoutMixin, LoginView):
authentication_form = TOTPLoginForm
template_name = "frontend/activate_totp.html"
title = "Activate Two-Factor Authentication"
def form_valid(self, form):
token = self.request.user.totpsecret
token.active = True
token.save()
messages.success(self.request, "Two-factor authentication was enabled for your account.")
return HttpResponseRedirect(self.get_success_url())
class TOTPDeactivationView(TitleMixin, TimeoutMixin, LoginView):
authentication_form = TOTPLoginForm
template_name = "frontend/deactivate_totp.html"
title = "Disable Two-Factor Authentication"
def form_valid(self, form):
token = self.request.user.totpsecret
token.active = False
token.save()
token.change_secret()
messages.success(self.request, "Two-factor authentication was disabled for your account.")
return HttpResponseRedirect(self.get_success_url())
class TOTPDispatcherView(TimeoutMixin, RedirectView):
def get_redirect_url(self):
if self.request.user.totpsecret.active:
return reverse_lazy("frontend:deactivate_totp")
return reverse_lazy("frontend:activate_totp")