Ejemplo n.º 1
0
	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;
		}
		
	}
Ejemplo n.º 2
0
	  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;