feat!: Remove django-admin default login (#29876)

* feat!: Remove django-admin default login
This commit is contained in:
Awais Qureshi
2022-03-01 17:38:36 +05:00
committed by GitHub
parent 5d4aa3af8b
commit fe57074dab
9 changed files with 98 additions and 22 deletions

View File

@@ -0,0 +1,32 @@
"""
Tests that verify that the admin view loads.
This is not inside a django app because it is a global property of the system.
"""
import ddt
from django.test import TestCase
from django.urls import reverse
from edx_toggles.toggles.testutils import override_waffle_flag
from openedx.core.djangoapps.user_authn.config.waffle import ADMIN_AUTH_REDIRECT_TO_LMS
@ddt.ddt
class TestAdminView(TestCase):
"""
Tests of the admin view.
"""
@override_waffle_flag(ADMIN_AUTH_REDIRECT_TO_LMS, True)
@ddt.data('/admin/', '/admin/login', reverse('admin:login'))
def test_admin_login_redirect(self, admin_url):
"""Admin login will redirect towards the site login page."""
response = self.client.get(admin_url, follow=True)
assert any('/login/edx-oauth2/?next=' in r[0] for r in response.redirect_chain)
def test_admin_login_default(self):
"""Without flag Admin login will redirect towards the admin default login page."""
response = self.client.get('/admin/', follow=True)
assert response.status_code == 200
self.assertIn('/admin/login/?next=/admin/', response.redirect_chain[0])
assert len(response.redirect_chain) == 1
assert response.template_name == ['admin/login.html']

View File

@@ -7,12 +7,17 @@ from django.conf import settings
from django.shortcuts import redirect
from urllib.parse import quote_plus # lint-amnesty, pylint: disable=wrong-import-order
from waffle.decorators import waffle_switch
from django.contrib import admin
from common.djangoapps.edxmako.shortcuts import render_to_response
from openedx.core.djangoapps.user_authn.config.waffle import ADMIN_AUTH_REDIRECT_TO_LMS
from ..config import waffle
__all__ = ['register_redirect_to_lms', 'login_redirect_to_lms', 'howitworks', 'accessibility']
__all__ = [
'register_redirect_to_lms', 'login_redirect_to_lms', 'howitworks', 'accessibility',
'redirect_to_lms_login_for_admin',
]
def register_redirect_to_lms(request):
@@ -39,6 +44,16 @@ def login_redirect_to_lms(request):
return redirect(login_url)
def redirect_to_lms_login_for_admin(request):
"""
This view redirect the admin/login url to the site's login page.
"""
if ADMIN_AUTH_REDIRECT_TO_LMS.is_enabled():
return redirect('/login?next=/admin')
else:
return admin.site.login(request)
def _build_next_param(request):
""" Returns the next param to be used with login or register. """
next_url = request.GET.get('next')