parent
539bffc866
commit
c7d7a3a621
|
@ -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
|
||||
if ($simplesaml->isAuthenticated())
|
||||
{
|
||||
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>
|
||||
[http://repos.entrouvert.org/spip-saml.git->http://repos.entrouvert.org/spip-saml.git]
|
||||
</lien>
|
||||
<!-- <fonctions>mes_fonctions.php</fonctions> -->
|
||||
<prefix>saml</prefix>
|
||||
<pipeline>
|
||||
<nom>definir_session</nom>
|
||||
<inclure>saml_pipelines.php</inclure>
|
||||
</pipeline>
|
||||
</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