add logout action

This commit is contained in:
Jérôme Schneider 2013-04-29 09:24:29 +02:00
parent 66c59cdd0c
commit c59bf5ae00
2 changed files with 59 additions and 0 deletions

58
action/logout.php Normal file
View File

@ -0,0 +1,58 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2007 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/cookie');
// http://doc.spip.org/@action_logout_dist
function action_logout_dist()
{
global $auteur_session, $ignore_auth_http, $simplesaml;
$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();
// 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");
$simplesaml->logout(generer_url_public('login'));
}
?>

View File

@ -86,6 +86,7 @@ function login_saml_successfull()
else
{
// Logout SAML au cas ou
spip_log("[auth_saml] logout");
$simplesaml->logout();
}
}