parent
539bffc866
commit
c7d7a3a621
|
@ -13,6 +13,7 @@
|
||||||
if (!defined("_ECRIRE_INC_VERSION")) return;
|
if (!defined("_ECRIRE_INC_VERSION")) return;
|
||||||
|
|
||||||
include_spip('inc/cookie');
|
include_spip('inc/cookie');
|
||||||
|
include_spip('inc/my_auth');
|
||||||
|
|
||||||
/* Loading simplesamlphp */
|
/* Loading simplesamlphp */
|
||||||
include_spip('inc/simplesamlphp/lib/_autoload');
|
include_spip('inc/simplesamlphp/lib/_autoload');
|
||||||
|
@ -20,44 +21,15 @@ include_spip('inc/simplesamlphp/lib/_autoload');
|
||||||
// http://doc.spip.org/@action_logout_dist
|
// http://doc.spip.org/@action_logout_dist
|
||||||
function action_logout_dist()
|
function action_logout_dist()
|
||||||
{
|
{
|
||||||
global $auteur_session, $ignore_auth_http;
|
|
||||||
|
|
||||||
$simplesaml = new SimpleSAML_Auth_Simple('default-sp');
|
$simplesaml = new SimpleSAML_Auth_Simple('default-sp');
|
||||||
$logout =_request('logout');
|
// Spip logout
|
||||||
$url = _request('url');
|
my_spip_logout();
|
||||||
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
|
// Logout SAML
|
||||||
spip_log("[auth_saml] logout " . url_de_base());
|
if ($simplesaml->isAuthenticated())
|
||||||
$simplesaml->logout(url_de_base());
|
{
|
||||||
|
spip_log("[auth_saml] logout " . url_de_base());
|
||||||
|
$simplesaml->logout(url_de_base());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
if (!defined("_ECRIRE_INC_VERSION")) return;
|
||||||
|
|
||||||
|
include_spip('inc/cookie');
|
||||||
|
|
||||||
|
function my_spip_logout()
|
||||||
|
{
|
||||||
|
global $auteur_session;
|
||||||
|
|
||||||
|
spip_log("[auth_saml] logout from spip");
|
||||||
|
$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);
|
||||||
|
spip_setcookie('spip_admin', '', -1, $r[1]);
|
||||||
|
spip_setcookie('spip_admin', '', -1);
|
||||||
|
}
|
||||||
|
if ($_SERVER['PHP_AUTH_USER']) {
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -12,6 +12,9 @@
|
||||||
<lien>
|
<lien>
|
||||||
[http://repos.entrouvert.org/spip-saml.git->http://repos.entrouvert.org/spip-saml.git]
|
[http://repos.entrouvert.org/spip-saml.git->http://repos.entrouvert.org/spip-saml.git]
|
||||||
</lien>
|
</lien>
|
||||||
<!-- <fonctions>mes_fonctions.php</fonctions> -->
|
|
||||||
<prefix>saml</prefix>
|
<prefix>saml</prefix>
|
||||||
|
<pipeline>
|
||||||
|
<nom>definir_session</nom>
|
||||||
|
<inclure>saml_pipelines.php</inclure>
|
||||||
|
</pipeline>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/* Loading simplesamlphp */
|
||||||
|
include_spip('inc/simplesamlphp/lib/_autoload');
|
||||||
|
|
||||||
|
include_spip('inc/my_auth');
|
||||||
|
include_spip('inc/session');
|
||||||
|
|
||||||
|
function saml_definir_session($session)
|
||||||
|
{
|
||||||
|
// Vérification de la connection à l'idp
|
||||||
|
if (verifier_session())
|
||||||
|
{
|
||||||
|
$simplesaml = new SimpleSAML_Auth_Simple('default-sp');
|
||||||
|
if (!$simplesaml->isAuthenticated())
|
||||||
|
{
|
||||||
|
my_spip_logout();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $session;
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
Reference in New Issue