Projet

Général

Profil

0001-log-out-from-local-app-when-slo-idp-initiated-19574.patch

Josué Kouka, 20 octobre 2017 11:29

Télécharger (3,32 ko)

Voir les différences:

Subject: [PATCH] log out from local app when slo idp initiated (#19574)

 mandayejs/mandaye/utils.py |  9 ++++++++-
 mandayejs/mandaye/views.py | 15 ++++++++++-----
 mandayejs/settings.py      |  3 +++
 3 files changed, 21 insertions(+), 6 deletions(-)
mandayejs/mandaye/utils.py
19 19
import subprocess
20 20
import logging
21 21
import multiprocessing
22
import urlparse
22 23

  
23 24
from django.conf import settings
25
from django.shortcuts import resolve_url
24 26

  
25 27
from Cookie import SimpleCookie
26 28

  
......
95 97

  
96 98
    data = {}
97 99
    data['logout_locator'] = getattr(app_settings, 'SITE_LOGOUT_LOCATOR')
98
    data['address'] = request.META.get('HTTP_REFERER')
100
    data['address'] = request.build_absolute_uri(resolve_url('home'))
101
    forced_logout_scheme = getattr(settings, 'PHANTOM_JS_LOGOUT_SCHEME')
102
    if forced_logout_scheme:
103
        url = urlparse.urlparse(data['address'])
104
        url = url._replace(scheme=forced_logout_scheme)
105
        data['address'] = url.geturl()
99 106
    cookies = SimpleCookie(request.META.get('HTTP_COOKIE'))
100 107
    domain = request.META.get('SERVER_NAME')
101 108

  
mandayejs/mandaye/views.py
21 21

  
22 22
from django.contrib.auth.models import User
23 23
from django.contrib.auth.decorators import login_required
24
from django.contrib.auth.signals import user_logged_out
24 25
from django.contrib import messages
26
from django.dispatch import receiver
25 27
from django.http import HttpResponseRedirect, HttpResponse
26 28
from django.shortcuts import render, resolve_url
27 29
from django.template import RequestContext
......
50 52

  
51 53
def logout(request, *args, **kwargs):
52 54
    logger.debug("running slo")
53
    data = get_logout_info(request)
54
    logger.debug(data)
55
    logger.debug("running phantomjs logout")
56
    result = exec_phantom(data, script='do_logout.js')
57
    logger.debug(result)
58 55
    response = mellon_logout(request, *args, **kwargs)
59 56
    logger.debug("deleting cookies")
60 57
    for cookie in app_settings.SITE_AUTH_COOKIE_KEYS:
......
64 61
    return response
65 62

  
66 63

  
64
@receiver(user_logged_out)
65
def local_logout(sender, request, user, **kwargs):
66
    data = get_logout_info(request)
67
    logger.debug(data)
68
    result = exec_phantom(data, script='do_logout.js')
69
    logger.debug(result)
70

  
71

  
67 72
class Panel(TemplateView):
68 73
    template_name = 'mandaye/panel.html'
69 74

  
mandayejs/settings.py
167 167
# Default timeout before killing Phantomjs process
168 168
PHANTOM_JS_TIMEOUT = 10
169 169

  
170
# Scheme to use for phantomjs logout
171
PHANTOM_JS_LOGOUT_SCHEME = None  # Default is request scheme
172

  
170 173
JSONFIELD_ENCODER_CLASS = 'django.core.serializers.json.DjangoJSONEncoder'
171 174

  
172 175
local_settings_file = os.environ.get('MANDAYEJS_SETTINGS_FILE',
173
-