From a07f967c3b55bb91fbf941b0f4ce0840527e8373 Mon Sep 17 00:00:00 2001 From: Josue Kouka Date: Fri, 5 Feb 2016 14:29:08 +0100 Subject: [PATCH] merge local and idp logout (#9865) --- mandayejs/applications.py | 15 ++++++++++++++ mandayejs/mandaye/static/single.logout.js | 8 ++++++++ mandayejs/mandaye/templates/mandaye/panel.html | 4 +++- mandayejs/mandaye/views.py | 27 +++++++++++++++++--------- mandayejs/urls.py | 5 ++++- 5 files changed, 48 insertions(+), 11 deletions(-) create mode 100644 mandayejs/mandaye/static/single.logout.js diff --git a/mandayejs/applications.py b/mandayejs/applications.py index 72cc369..986751a 100644 --- a/mandayejs/applications.py +++ b/mandayejs/applications.py @@ -180,6 +180,13 @@ class Archimed(AppSettings): name='archimed-account-details'), ) + SITE_LOGOUT_LOCATOR = '.account_logoff' + + SITE_LOGOUT_SETTINGS = { + 'method': 'POST', + 'url': '/DEFAULT/Ermes/Recherche/logon.svc/logoff', + 'data': {}, + } # Arpege App Settings class Arpege(AppSettings): @@ -258,3 +265,11 @@ class ImuseTeacherMontpellier(Imuse): class ImuseFamilyMontpellier(Imuse): SITE_LOGIN_PATH = '/montpellier/extranet/login/usa_index_famille.php' + SITE_LOGOUT_LOCATOR = '#MENU_FAMILLE_QUITTER' + + # DOC /montpellier/extranet/includes_extranet/javascript.php?files=../includes/functions.js,../includes_extranet/functions_web.js, + SITE_LOGOUT_SETTINGS = { + 'method': 'POST', + 'url': '/montpellier/extranet/login/gen_logout.php', + 'data': {'session_end':'false'}, + } diff --git a/mandayejs/mandaye/static/single.logout.js b/mandayejs/mandaye/static/single.logout.js new file mode 100644 index 0000000..225613e --- /dev/null +++ b/mandayejs/mandaye/static/single.logout.js @@ -0,0 +1,8 @@ +$(function(){ + if (typeof(mandaye_logout_locator) === 'undefined') + return false; + $(mandaye_logout_locator).click(function(){ + console.log("launching slo"); + $.get('/_mandaye/logout/', function(){}); + }); +}); diff --git a/mandayejs/mandaye/templates/mandaye/panel.html b/mandayejs/mandaye/templates/mandaye/panel.html index 37c0e5d..7c3472d 100644 --- a/mandayejs/mandaye/templates/mandaye/panel.html +++ b/mandayejs/mandaye/templates/mandaye/panel.html @@ -3,9 +3,11 @@ + {% if site_scripts %} {%for script in site_scripts%} @@ -23,7 +25,7 @@ {% if user.is_authenticated %}
{{ user.get_full_name }}
{% trans 'advances' %}
-
{% trans 'logout' %}
+
{% trans 'logout' %}
{% if is_linked %}
{% trans 'dissociate' %}
{% else %} diff --git a/mandayejs/mandaye/views.py b/mandayejs/mandaye/views.py index e2e4ea3..c46db9f 100644 --- a/mandayejs/mandaye/views.py +++ b/mandayejs/mandaye/views.py @@ -16,11 +16,7 @@ from __future__ import absolute_import -import os -import json import logging -import urlparse -import urllib from django.conf import settings from django.contrib.auth import views as auth_views @@ -44,16 +40,27 @@ from mandayejs.mandaye.forms import FormFactory from mandayejs.mandaye.utils import exec_phantom, cookie_builder, get_login_info from mandayejs.applications import get_app_settings +from mellon.views import logout as mellon_logout + +import requests + app_settings = get_app_settings() logger = logging.getLogger(__name__) -def login(request, *args, **kwargs): - return auth_views.login(request, *args, **kwargs) - def logout(request, *args, **kwargs): - auth_logout(request) - return HttpResponseRedirect('/') + logger.debug("running slo") + response = mellon_logout(request, *args, **kwargs) + for cookie in app_settings.SITE_AUTH_COOKIE_KEYS: + response.delete_cookie(cookie) + logout_settings = getattr(app_settings, 'SITE_LOGOUT_SETTINGS') + if logout_settings: + logout_settings['verify'] = False + logout_settings['url'] = request.build_absolute_uri(logout_settings['url']) + logger.debug(logout_settings) + req_response = requests.request(**logout_settings) + logger.debug('application logout response {}'.format(req_response.status_code)) + return response class Panel(TemplateView): @@ -67,6 +74,8 @@ class Panel(TemplateView): 'SITE_FORCE_REDIRECT_URL', '') context['force_redirect_locator'] = getattr(app_settings, 'SITE_FORCE_REDIRECT_LOCATOR', '') + context['logout_locator'] = getattr(app_settings, + 'SITE_LOGOUT_LOCATOR','') context['is_linked'] = self.is_account_linked() return context diff --git a/mandayejs/urls.py b/mandayejs/urls.py index d08360b..46e6c31 100644 --- a/mandayejs/urls.py +++ b/mandayejs/urls.py @@ -33,5 +33,8 @@ urlpatterns = patterns('', ) if 'mellon' in settings.INSTALLED_APPS: - urlpatterns += patterns('', url(r'^_mandaye/accounts/mellon/', include('mellon.urls'))) + urlpatterns += patterns('', + url(r'^_mandaye/logout/$', 'mandayejs.mandaye.views.logout', name='logout'), + url(r'^_mandaye/accounts/mellon/', include('mellon.urls')), + ) -- 2.7.0