From 3418203d49b59f00fc597edaf758e9e4c2cb1f34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Schneider?= Date: Mon, 27 Jul 2015 14:46:28 +0200 Subject: [PATCH] ermes logout: make slo when you using an idp --- cam/filters/archimed.py | 20 +++++++++++++++++++- cam/mappers/archimed_saml.py | 23 +++++++++++++---------- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/cam/filters/archimed.py b/cam/filters/archimed.py index 1163103..71bdcee 100644 --- a/cam/filters/archimed.py +++ b/cam/filters/archimed.py @@ -151,6 +151,24 @@ def registration_association(env, values, request, response): clean_registration_session(env, values, request, response) return response +def rewrite_logged_box(env, values, request, response): + session = env.get('beaker.session') + if response.msg and \ + 'class="account_logoff"' in response.msg and \ + session and \ + session.has_key('unique_id'): + r = re.compile( + r'', + re.MULTILINE|re.DOTALL) + + resp = re.sub(r, + r""" + Me déconnecter +""", + response.msg) + response.msg = resp + return response + def is_user_locally_logged_in(env, request, response): session = env['beaker.session'] if session.has_key('locally_logged_in') and session['locally_logged_in']: @@ -159,7 +177,7 @@ def is_user_locally_logged_in(env, request, response): def is_logged_in(env, values, request, response): session = env['beaker.session'] - if response.msg and 'account_logoff' in response.msg: + if response.msg and '
Bienvenue' in response.msg: session['locally_logged_in'] = True else: session['locally_logged_in'] = False diff --git a/cam/mappers/archimed_saml.py b/cam/mappers/archimed_saml.py index cf2e07c..93bcc59 100644 --- a/cam/mappers/archimed_saml.py +++ b/cam/mappers/archimed_saml.py @@ -53,10 +53,15 @@ mapping = [ { 'path': r'/', 'method': 'GET', - 'on_response': [{ - 'content-types': ['text/html'], - 'filter': archimed.is_logged_in, - }], + 'content-types': ['text/html'], + 'on_response': [ + { + 'filter': archimed.is_logged_in, + }, + { + 'filter': archimed.rewrite_logged_box + }, + ], }, { 'path': r'/mandaye/login$', @@ -74,9 +79,9 @@ mapping = [ 'response': {'auth': 'sso',} }, { - 'path': r'/%s/DEFAULT/Ermes/Recherche/logon.svc/logoff$' % base, - 'on_response': [{'auth': 'logout',}], - }, + 'path': r'/%s/DEFAULT/Ermes/Recherche/logon.svc/logoff$' % base, + 'on_response': [{'auth': 'logout',}], + }, { 'path': r'%s$' % END_POINTS_PATH['single_sign_on_post'], 'method': 'POST', @@ -122,7 +127,7 @@ mapping = [ 'action': '/mandaye/associate?next_url=/%s' % base, 'login_name': form_values['username_field'], 'password_name': form_values['password_field'], - }, + }, }] }, { @@ -154,5 +159,3 @@ mapping = [ 'response': {'filter': archimed.json_response,}, }, ] - -