Projet

Général

Profil

0001-merge-local-and-idp-logout-9865.patch

Josué Kouka, 05 février 2016 18:53

Télécharger (5,81 ko)

Voir les différences:

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
mandayejs/applications.py
180 180
            name='archimed-account-details'),
181 181
    )
182 182

  
183
    SITE_LOGOUT_LOCATOR = '.account_logoff'
184

  
185
    SITE_LOGOUT_SETTINGS = {
186
        'method': 'POST',
187
        'url': '/DEFAULT/Ermes/Recherche/logon.svc/logoff',
188
        'data': {},
189
    }
183 190

  
184 191
# Arpege App Settings
185 192
class Arpege(AppSettings):
......
258 265
class ImuseFamilyMontpellier(Imuse):
259 266
    SITE_LOGIN_PATH = '/montpellier/extranet/login/usa_index_famille.php'
260 267

  
268
    SITE_LOGOUT_LOCATOR = '#MENU_FAMILLE_QUITTER'
269

  
270
    # DOC /montpellier/extranet/includes_extranet/javascript.php?files=../includes/functions.js,../includes_extranet/functions_web.js,
271
    SITE_LOGOUT_SETTINGS = {
272
        'method': 'POST',
273
        'url': '/montpellier/extranet/login/gen_logout.php',
274
        'data': {'session_end':'false'},
275
    }
mandayejs/mandaye/static/single.logout.js
1
$(function(){
2
    if (typeof(mandaye_logout_locator) === 'undefined')
3
        return false;
4
    $(mandaye_logout_locator).click(function(){
5
        console.log("launching slo");
6
        $.get('/_mandaye/logout/', function(){});
7
    });
8
});
mandayejs/mandaye/templates/mandaye/panel.html
3 3
<script type="text/javascript">
4 4
    var mandaye_redirect_url = '{{force_redirect_url}}';
5 5
    var mandaye_redirect_locator = '{{force_redirect_locator}}';
6
    var mandaye_logout_locator = '{{logout_locator}}';
6 7
</script>
7 8

  
8 9
<script type="text/javascript" src="{% static 'force.redirect.js' %}"></script>
10
<script type="text/javascript" src="{% static 'single.logout.js' %}"></script>
9 11

  
10 12
{% if site_scripts %}
11 13
    {%for script in site_scripts%}
......
23 25
{% if user.is_authenticated %}
24 26
<div id="mandaye-username"><a href="{{idp_url}}/accounts">{{ user.get_full_name }}</a></div>
25 27
    <div id="mandaye-advances"><a href="{{wcs_url}}">{% trans 'advances' %}</a></div>
26
    <div id="mandaye-logon-url"><a href="{% url 'mellon_logout' %}">{% trans 'logout' %}</a></div>
28
    <div id="mandaye-logon-url"><a href="{% url 'logout' %}">{% trans 'logout' %}</a></div>
27 29
    {% if is_linked %}
28 30
        <div id="mandaye-association-url"><a href="{% url 'dissociate' %}">{% trans 'dissociate' %}</a></div>
29 31
    {% else %}
mandayejs/mandaye/views.py
16 16

  
17 17
from __future__ import absolute_import
18 18

  
19
import os
20
import json
21 19
import logging
22
import urlparse
23
import urllib
24 20

  
25 21
from django.conf import settings
26 22
from django.contrib.auth import views as auth_views
......
44 40
from mandayejs.mandaye.utils import exec_phantom, cookie_builder, get_login_info
45 41
from mandayejs.applications import get_app_settings
46 42

  
43
from mellon.views import logout as mellon_logout
44

  
45
import requests
46

  
47 47
app_settings = get_app_settings()
48 48

  
49 49
logger = logging.getLogger(__name__)
50 50

  
51
def login(request, *args, **kwargs):
52
    return auth_views.login(request, *args, **kwargs)
53

  
54 51
def logout(request, *args, **kwargs):
55
    auth_logout(request)
56
    return HttpResponseRedirect('/')
52
    logger.debug("running slo")
53
    response = mellon_logout(request, *args, **kwargs)
54
    for cookie in app_settings.SITE_AUTH_COOKIE_KEYS:
55
        response.delete_cookie(cookie)
56
    logout_settings = getattr(app_settings, 'SITE_LOGOUT_SETTINGS')
57
    if logout_settings:
58
        logout_settings['verify'] = False
59
        logout_settings['url'] = request.build_absolute_uri(logout_settings['url'])
60
        logger.debug(logout_settings)
61
        req_response = requests.request(**logout_settings)
62
        logger.debug('application logout response {}'.format(req_response.status_code))
63
    return response
57 64

  
58 65

  
59 66
class Panel(TemplateView):
......
67 74
                'SITE_FORCE_REDIRECT_URL', '')
68 75
        context['force_redirect_locator'] = getattr(app_settings,
69 76
                'SITE_FORCE_REDIRECT_LOCATOR', '')
77
        context['logout_locator'] = getattr(app_settings,
78
                'SITE_LOGOUT_LOCATOR','')
70 79
        context['is_linked'] = self.is_account_linked()
71 80
        return context
72 81

  
mandayejs/urls.py
33 33
)
34 34

  
35 35
if 'mellon' in settings.INSTALLED_APPS:
36
    urlpatterns += patterns('', url(r'^_mandaye/accounts/mellon/', include('mellon.urls')))
36
    urlpatterns += patterns('',
37
        url(r'^_mandaye/logout/$', 'mandayejs.mandaye.views.logout', name='logout'),
38
        url(r'^_mandaye/accounts/mellon/', include('mellon.urls')),
39
    )
37 40

  
38
-