Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions admin/base/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,13 @@
from django.contrib import admin
from admin.base.settings import ADMIN_BASE, DEBUG
from admin.base import views
from admin.common_auth.views import LoginView

base_pattern = f'^{ADMIN_BASE}'

# Route Django admin's login through our LoginView so it enforces two-factor auth
admin.site.login = LoginView.as_view()

urlpatterns = [
### ADMIN ###
re_path(
Expand Down
5 changes: 5 additions & 0 deletions admin_tests/common_auth/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

from django.utils import timezone
from django.test import RequestFactory
from django.urls import resolve, reverse
from django.http import Http404
from admin.nodes.views import NodeSearchView
from tests.base import AdminTestCase
Expand Down Expand Up @@ -243,3 +244,7 @@ def custom_login(request, user, *args, **kwargs):
mock_redirect.assert_called()
mocked_login.assert_not_called()
assert not hasattr(request, 'user')

def test_django_admin_login_uses_login_view(self):
match = resolve(reverse('admin:login'))
assert match.func.view_class is LoginView