private function reset($_auto = "0") { # Codes utilisés pour $_auto : # 0 : logout normal # 2 : logout renvoyé par la fonction checkAccess (problème gepiPath ou accès interdit) # 3 : logout lié à un timeout # 10 : logout lié à une nouvelle connexion sous un nouveau profil # On teste 'start' simplement pour simplement vérifier que la session n'a pas encore été fermée. if ($this->start) { $this->register_logout($_auto); } if ($this->auth_simpleSAML == 'yes') { include_once(dirname(__FILE__).'/simplesaml/lib/_autoload.php'); $auth = new SimpleSAML_Auth_GepiSimple(); if ($auth->isAuthenticated()) { $auth->logout(); //attention, cette fonction ->logout() ne retourne, pas, le reste du script ne sera pas éxécuter à partir de cette ligne. //Il à y avoir un refresh automatique de la page suite au ->logout(), et donc le script va être re-éxecuter, avec cette fois //$auth->isAuthenticated() qui vaudra false, et donc le reste du reset va être éxecuter } } // Détruit toutes les variables de session session_unset(); $_SESSION = array(); // Détruit le cookie sur le navigateur $CookieInfo = session_get_cookie_params(); @setcookie(session_name(), '', time()-3600, $CookieInfo['path']); // détruit la session sur le serveur session_destroy(); //on redémarre une nouvelle session session_start(); session_regenerate_id(); $this->login = null; //si une url de portail est donnée, on redirige if (isset($_REQUEST['portal_return_url'])) { header('Location:'.$_REQUEST['portal_return_url']); die; } }
if (is_file($filename) && (!strstr($filename, 'index.html'))) { @unlink ($filename); // 'signature' est un dossier et actuellement on ne supprime pas les dossiers au logout. // De la même façon, le dossier contenant les PDF d'archivage de bulletins n'est pas supprimé automatiquement. // Il faut passer par la Gestion des dossiers temporaires } } unset ($filename); } die(); } if (getSettingValue('gepiEnableIdpSaml20') == 'yes' && (!isset($_REQUEST['idploggedout']))) { include_once(dirname(__FILE__).'/lib/simplesaml/lib/_autoload.php'); $auth = new SimpleSAML_Auth_GepiSimple(); if ($auth->isAuthenticated()) { //on fait le logout de session avec simplesaml en tant que fournisseur d'identité. Ça va déconnecter uniqement les services associés. //Si gepi n'est pas connecté en local, il faut revenir à la page de logout et passer à la déconnexion de gepi $logout_return_url = $_SERVER['REQUEST_URI']; if (strpos($logout_return_url, '?')) { $logout_return_url .= '&'; } else { $logout_return_url .= '?'; } $logout_return_url .= 'idploggedout=done'; header("Location:./lib/simplesaml/www/saml2/idp/SingleLogoutService.php?ReturnTo=".urlencode($logout_return_url)); exit(); } } //print_r($session_gepi);die;