diff --git a/action/logout.php b/action/logout.php index d4be5a7..d1cd472 100644 --- a/action/logout.php +++ b/action/logout.php @@ -13,6 +13,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return; include_spip('inc/cookie'); +include_spip('inc/my_auth'); /* Loading simplesamlphp */ include_spip('inc/simplesamlphp/lib/_autoload'); @@ -20,44 +21,15 @@ include_spip('inc/simplesamlphp/lib/_autoload'); // http://doc.spip.org/@action_logout_dist function action_logout_dist() { - global $auteur_session, $ignore_auth_http; - $simplesaml = new SimpleSAML_Auth_Simple('default-sp'); - $logout =_request('logout'); - $url = _request('url'); - spip_log("logout $logout $url" . $auteur_session['id_auteur']); - // cas particulier, logout dans l'espace public - if ($logout == 'public' AND !$url) - $url = url_de_base(); + // Spip logout + my_spip_logout(); - // seul le loge peut se deloger (mais id_auteur peut valoir 0 apres une restauration avortee) - if (is_numeric($auteur_session['id_auteur'])) { - spip_query("UPDATE spip_auteurs SET en_ligne = DATE_SUB(NOW(),INTERVAL 15 MINUTE) WHERE id_auteur = ".$auteur_session['id_auteur']); - // le logout explicite vaut destruction de toutes les sessions - if ($_COOKIE['spip_session']) { - $session = charger_fonction('session', 'inc'); - $session($auteur_session['id_auteur']); - preg_match(',^[^/]*//[^/]*(.*)/$,', - url_de_base(), - $r); - spip_setcookie('spip_session', '', -1,$r[1]); - spip_setcookie('spip_session', '', -1); - } - if ($_SERVER['PHP_AUTH_USER'] AND !$ignore_auth_http) { - include_spip('inc/actions'); - if (verifier_php_auth()) { - ask_php_auth(_T('login_deconnexion_ok'), - _T('login_verifiez_navigateur'), - _T('login_retour_public'), - "redirect=". _DIR_RESTREINT_ABS, - _T('login_test_navigateur'), - true); - exit; - } - } - } // Logout SAML - spip_log("[auth_saml] logout " . url_de_base()); - $simplesaml->logout(url_de_base()); + if ($simplesaml->isAuthenticated()) + { + spip_log("[auth_saml] logout " . url_de_base()); + $simplesaml->logout(url_de_base()); + } } ?> diff --git a/inc/my_auth.php b/inc/my_auth.php new file mode 100644 index 0000000..79b8478 --- /dev/null +++ b/inc/my_auth.php @@ -0,0 +1,49 @@ + diff --git a/plugin.xml b/plugin.xml index e1e6c90..3260173 100644 --- a/plugin.xml +++ b/plugin.xml @@ -12,6 +12,9 @@ [http://repos.entrouvert.org/spip-saml.git->http://repos.entrouvert.org/spip-saml.git] - saml + + definir_session + saml_pipelines.php + diff --git a/saml_pipelines.php b/saml_pipelines.php new file mode 100644 index 0000000..e24d607 --- /dev/null +++ b/saml_pipelines.php @@ -0,0 +1,23 @@ +isAuthenticated()) + { + my_spip_logout(); + } + } + return $session; +} + +?>