log out from local app when slo idp initiated (#19574)
This commit is contained in:
parent
6b9a0b1b5c
commit
fee32a4e30
|
@ -19,8 +19,10 @@ import json
|
|||
import subprocess
|
||||
import logging
|
||||
import multiprocessing
|
||||
import urlparse
|
||||
|
||||
from django.conf import settings
|
||||
from django.shortcuts import resolve_url
|
||||
|
||||
from Cookie import SimpleCookie
|
||||
|
||||
|
@ -95,7 +97,12 @@ def get_logout_info(request):
|
|||
|
||||
data = {}
|
||||
data['logout_locator'] = getattr(app_settings, 'SITE_LOGOUT_LOCATOR')
|
||||
data['address'] = request.META.get('HTTP_REFERER')
|
||||
data['address'] = request.build_absolute_uri(resolve_url('home'))
|
||||
forced_logout_scheme = getattr(settings, 'PHANTOM_JS_LOGOUT_SCHEME')
|
||||
if forced_logout_scheme:
|
||||
url = urlparse.urlparse(data['address'])
|
||||
url = url._replace(scheme=forced_logout_scheme)
|
||||
data['address'] = url.geturl()
|
||||
cookies = SimpleCookie(request.META.get('HTTP_COOKIE'))
|
||||
domain = request.META.get('SERVER_NAME')
|
||||
|
||||
|
|
|
@ -21,7 +21,9 @@ from urlparse import urlparse
|
|||
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.auth.signals import user_logged_out
|
||||
from django.contrib import messages
|
||||
from django.dispatch import receiver
|
||||
from django.http import HttpResponseRedirect, HttpResponse
|
||||
from django.shortcuts import render, resolve_url
|
||||
from django.template import RequestContext
|
||||
|
@ -50,11 +52,6 @@ def home(request):
|
|||
|
||||
def logout(request, *args, **kwargs):
|
||||
logger.debug("running slo")
|
||||
data = get_logout_info(request)
|
||||
logger.debug(data)
|
||||
logger.debug("running phantomjs logout")
|
||||
result = exec_phantom(data, script='do_logout.js')
|
||||
logger.debug(result)
|
||||
response = mellon_logout(request, *args, **kwargs)
|
||||
logger.debug("deleting cookies")
|
||||
for cookie in app_settings.SITE_AUTH_COOKIE_KEYS:
|
||||
|
@ -64,6 +61,14 @@ def logout(request, *args, **kwargs):
|
|||
return response
|
||||
|
||||
|
||||
@receiver(user_logged_out)
|
||||
def local_logout(sender, request, user, **kwargs):
|
||||
data = get_logout_info(request)
|
||||
logger.debug(data)
|
||||
result = exec_phantom(data, script='do_logout.js')
|
||||
logger.debug(result)
|
||||
|
||||
|
||||
class Panel(TemplateView):
|
||||
template_name = 'mandaye/panel.html'
|
||||
|
||||
|
|
|
@ -167,6 +167,9 @@ PHANTOM_JS_BINARY = '/usr/bin/phantomjs'
|
|||
# Default timeout before killing Phantomjs process
|
||||
PHANTOM_JS_TIMEOUT = 10
|
||||
|
||||
# Scheme to use for phantomjs logout
|
||||
PHANTOM_JS_LOGOUT_SCHEME = None # Default is request scheme
|
||||
|
||||
JSONFIELD_ENCODER_CLASS = 'django.core.serializers.json.DjangoJSONEncoder'
|
||||
|
||||
local_settings_file = os.environ.get('MANDAYEJS_SETTINGS_FILE',
|
||||
|
|
Reference in New Issue