-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathadmin.py
28 lines (26 loc) · 1.23 KB
/
admin.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from django.urls.base import reverse
from django.conf import settings
from django.contrib.auth import REDIRECT_FIELD_NAME
from django.http import HttpResponseRedirect
from django.utils.http import is_safe_url
from django.contrib.auth.views import redirect_to_login
from django.shortcuts import resolve_url
from two_factor.admin import AdminSiteOTPRequired, AdminSiteOTPRequiredMixin
class AdminSiteOTPRequiredMixinRedirSetup(AdminSiteOTPRequired):
def login(self, request, extra_context=None):
redirect_to = request.POST.get(
REDIRECT_FIELD_NAME, request.GET.get(REDIRECT_FIELD_NAME)
)
if request.method == "GET" and super(
AdminSiteOTPRequiredMixin, self
).has_permission(request):
if request.user.is_verified():
index_path = reverse("admin:index", current_app=self.name)
else:
index_path = reverse("customer:security-denied", current_app=self.name)
return HttpResponseRedirect(index_path)
if not redirect_to or not is_safe_url(
url=redirect_to, allowed_hosts=[request.get_host()]
):
redirect_to = resolve_url(settings.LOGIN_REDIRECT_URL)
return redirect_to_login(redirect_to)