From 634fcb48b51a093fdabeb8c76fe005932fd66184 Mon Sep 17 00:00:00 2001 From: Josue Kouka Date: Mon, 30 Oct 2017 18:38:48 +0100 Subject: [PATCH] add parameter to override default login path (#19763) --- mandayejs/applications.py | 25 ------------------------- mandayejs/mandaye/utils.py | 4 ++-- mandayejs/settings.py | 3 +++ tests/test_mandayejs.py | 11 ++++++++++- 4 files changed, 15 insertions(+), 28 deletions(-) diff --git a/mandayejs/applications.py b/mandayejs/applications.py index ff02ff3..2935390 100644 --- a/mandayejs/applications.py +++ b/mandayejs/applications.py @@ -70,9 +70,6 @@ class AppSettingsMeta(type): if not dct.get('SITE_FORM_SUBMIT_ELEMENT', None): dct['SITE_FORM_SUBMIT_ELEMENT'] = 'input[type=submit], button' - if dct.get('SITE_LOGIN_PATH_PREFIX', None): - parent = bases[0] - dct['SITE_LOGIN_PATH'] = os.path.join(dct['SITE_LOGIN_PATH_PREFIX'], parent.SITE_LOGIN_PATH.strip('/')) return super(AppSettingsMeta, cls).__new__(cls, name, bases, dct) @@ -228,10 +225,6 @@ class Arpege(AppSettings): SITE_LOGOUT_LOCATOR = '#espace-login form input[type=submit]' -class ArpegeVincennesTest(Arpege): - SITE_LOGIN_PATH = '/vincennes-test/index.do' - - class Imuse(AppSettings): SITE_LOGIN_PATH = 'extranet/login/gen_index_groupe.php?nav=autre' @@ -265,20 +258,6 @@ class Imuse(AppSettings): SITE_FORM_SUBMIT_ELEMENT = '#INDEX_BT_LOGIN' -class ImuseTeacher(Imuse): - SITE_LOGIN_PATH = '/extranet/login/ens_index_enseignant.php' - - -class ImuseFamily(Imuse): - SITE_LOGIN_PATH = '/extranet/login/usa_index_famille.php' - - SITE_LOGOUT_LOCATOR = '#MENU_FAMILLE_QUITTER' - - -class ImuseFamilyMontpellier(ImuseFamily): - SITE_LOGIN_PATH_PREFIX = '/montpellier/' - - class Sezhame(AppSettings): SITE_LOGIN_PATH = '/sezhame/page/connexion-abonne?destination=user' @@ -344,7 +323,3 @@ class Teamnet(AppSettings): SITE_FORCE_REDIRECT_LOCATOR = '#loginForm' SITE_LOGOUT_LOCATOR = ".infoUtilisateur[alt=Deconnexion]" - - -class TeamnetMeyzieu(Teamnet): - SITE_LOGIN_PATH_PREFIX = '/meyzieu/' diff --git a/mandayejs/mandaye/utils.py b/mandayejs/mandaye/utils.py index 3b0d345..f3bdbe9 100644 --- a/mandayejs/mandaye/utils.py +++ b/mandayejs/mandaye/utils.py @@ -133,9 +133,9 @@ def get_login_info(request, credentials): """Returns phantomjs login prerequis """ app_settings = get_app_settings() - + login_path = getattr(settings, 'SITE_LOGIN_PATH', app_settings.SITE_LOGIN_PATH) return { - 'address': request.build_absolute_uri(app_settings.SITE_LOGIN_PATH), + 'address': request.build_absolute_uri(login_path), 'cookies': [], 'locators': [credentials.to_login_info()], 'auth_checker': app_settings.SITE_AUTH_CHECKER, diff --git a/mandayejs/settings.py b/mandayejs/settings.py index 33712c4..e03c812 100644 --- a/mandayejs/settings.py +++ b/mandayejs/settings.py @@ -170,6 +170,9 @@ PHANTOM_JS_TIMEOUT = 10 # Scheme to use for phantomjs logout PHANTOM_JS_LOGOUT_SCHEME = None # Default is request scheme +# Override the default login path of an application +SITE_LOGIN_PATH = None + JSONFIELD_ENCODER_CLASS = 'django.core.serializers.json.DjangoJSONEncoder' local_settings_file = os.environ.get('MANDAYEJS_SETTINGS_FILE', diff --git a/tests/test_mandayejs.py b/tests/test_mandayejs.py index 8469337..22a60a1 100644 --- a/tests/test_mandayejs.py +++ b/tests/test_mandayejs.py @@ -13,7 +13,7 @@ from django.test.client import RequestFactory, Client from django.core.urlresolvers import reverse from mandayejs.mandaye.models import UserCredentials -from mandayejs.mandaye.utils import exec_phantom +from mandayejs.mandaye.utils import exec_phantom, get_login_info from mandayejs.mandaye.forms import FormFactory from mandayejs.mandaye.views import post_login_do @@ -409,3 +409,12 @@ def test_post_login_do_with_next_url(mocked_popen, user_john): request.user = user_john response = post_login_do(request) assert 'window.top.location = "http://example.net/"' in response.content + + +@mock.patch('mandayejs.applications.Test.SITE_LOCATORS', MOCKED_SITE_LOCATORS) +def test_app_login_path_overriding(settings, cred_john): + data = get_login_info(RequestFactory().get('/'), cred_john) + assert data['address'] == 'http://testserver/' + settings.SITE_LOGIN_PATH = '/login' + data = get_login_info(RequestFactory().get('/'), cred_john) + assert data['address'] == 'http://testserver/login' -- 2.11.0