if (isset($webmestre_denomination, $connexion_mode, $connexion_nom) == FALSE) { exit_json(FALSE, 'Base de l\'établissement incomplète !'); } exit_json(TRUE, afficher_nom_etablissement($BASE = 0, $webmestre_denomination) . afficher_formulaire_identification($profil, $connexion_mode, $connexion_nom)); } // Charger le formulaire de choix des établissements (installation multi-structures) if ($action == 'initialiser' && $BASE == 0 && HEBERGEUR_INSTALLATION == 'multi-structures' || $action == 'choisir' && $profil) { exit_json(TRUE, afficher_formulaire_etablissement($BASE, $profil)); } // Charger le formulaire pour un établissement donné (installation multi-structures) if ($action == 'initialiser' && $BASE > 0 && HEBERGEUR_INSTALLATION == 'multi-structures' || $action == 'charger' && $profil) { // Une première requête sur SACOCHE_WEBMESTRE_BD_NAME pour vérifier que la structure est référencée $structure_denomination = DB_WEBMESTRE_PUBLIC::DB_recuperer_structure_nom_for_Id($BASE); if ($structure_denomination === NULL) { // Sans doute un établissement supprimé, mais le cookie est encore là Cookie::effacer(COOKIE_STRUCTURE); exit_json(FALSE, 'Établissement non trouvé dans la base d\'administration !'); } // Mettre à jour la base si nécessaire charger_parametres_mysql_supplementaires($BASE); maj_base_structure_si_besoin($BASE); // Une deuxième requête sur SACOCHE_STRUCTURE_BD_NAME pour savoir si le mode de connexion est SSO ou pas $DB_TAB = DB_STRUCTURE_PUBLIC::DB_lister_parametres('"connexion_mode","connexion_nom"'); foreach ($DB_TAB as $DB_ROW) { ${$DB_ROW['parametre_nom']} = $DB_ROW['parametre_valeur']; } if (isset($connexion_mode, $connexion_nom) == FALSE) { exit_json(FALSE, 'Base de l\'établissement incomplète !'); } exit_json(TRUE, afficher_nom_etablissement($BASE, $structure_denomination) . afficher_formulaire_identification($profil, $connexion_mode, $connexion_nom)); }
function exit_error($titre, $contenu, $lien = 'accueil') { header('Content-Type: text/html; charset=' . CHARSET); if (in_array(SACoche, array('ajax', 'appel_externe'))) { echo str_replace('<br />', ' ', $contenu); } else { // URL_DIR_SACOCHE peut ne pas être encore définie si sortie au début du loader. if (defined('URL_DIR_SACOCHE')) { $chemin = URL_DIR_SACOCHE; } elseif (defined('APPEL_SITE_PROJET')) { $chemin = './sacoche/'; } else { $chemin = './'; } echo '<!DOCTYPE html>' . NL; echo '<html lang="fr">' . NL; echo '<head>' . NL; echo '<link rel="stylesheet" type="text/css" href="' . $chemin . '_css/style.css" />' . NL; echo '<style type="text/css">#cadre_milieu{color:#D00}</style>' . NL; echo '<title>SACoche » ' . $titre . '</title>' . NL; echo '</head>' . NL; echo '<body>' . NL; echo '<div id="cadre_milieu">' . NL; echo '<div class="hc"><img src="' . $chemin . '_img/logo_grand.gif" alt="SACoche" width="208" height="71" /></div>' . NL; echo '<h1>' . $titre . '</h1>' . NL; echo '<p>' . str_replace('<br />', '</p><p>', $contenu) . '</p>' . NL; if ($lien == 'accueil') { echo '<p><a href="' . $chemin . 'index.php">Retour en page d\'accueil de SACoche.</a></p>' . NL; } elseif ($lien == 'install') { echo '<p><a href="' . $chemin . 'index.php?page=public_installation">Procédure d\'installation de SACoche.</a></p>' . NL; } echo '</div>' . NL; echo '</body>' . NL; echo '</html>' . NL; } // Suppression du cookie provisoire ayant servi à mémoriser des paramètres multiples transmis en GET dans le cas où le service d'authentification externe en perd. // C'est le cas lors de l'appel d'un IdP de type RSA FIM, application nationale du ministère... if (isset($_COOKIE[COOKIE_MEMOGET])) { Cookie::effacer(COOKIE_MEMOGET); } exit; }
* Vous devriez avoir reçu une copie de la Licence Publique Générale GNU Affero avec SACoche ; * si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>. * */ if (!defined('SACoche')) { exit('Ce fichier ne peut être appelé directement !'); } $TITRE = ''; // Pas de titre pour que le logo s'affiche à la place // Alerte non déconnexion de l'ENT si deconnexion de SACoche depuis un compte connecté via un ENT if (isset($_COOKIE[COOKIE_STRUCTURE]) && isset($_COOKIE[COOKIE_AUTHMODE]) && $_COOKIE[COOKIE_AUTHMODE] != 'normal') { echo '<div class="danger">Vous n\'êtes pas déconnecté du service d\'authentification externe, on peut donc revenir dans <em>SACoche</em> sans s\'identifier !<br />Fermez votre navigateur ou <a href="index.php?page=public_logout_SSO&base=' . $_COOKIE[COOKIE_STRUCTURE] . '">déconnectez-vous de ce service</a>.</div>' . NL . '<hr />' . NL; } // Supprimer le cookie avec le mode d'identification, servant à une reconnexion SSO, devenu inutile puisque déconnecté à présent. if (isset($_COOKIE[COOKIE_AUTHMODE])) { Cookie::effacer(COOKIE_AUTHMODE); } // En cas de multi-structures, il faut savoir dans quelle base récupérer les informations. // Un UAI ou un id de base peut être transmis, mais on peut aussi retrouver l'information dans un cookie. $BASE = 0; if (HEBERGEUR_INSTALLATION == 'multi-structures') { // Lecture d'un cookie sur le poste client servant à retenir le dernier établissement sélectionné si identification avec succès $BASE = isset($_COOKIE[COOKIE_STRUCTURE]) ? Clean::entier($_COOKIE[COOKIE_STRUCTURE]) : 0; // Test si id d'établissement transmis dans l'URL ; historiquement "id" si connexion normale et "base" si connexion SSO $BASE = isset($_GET['id']) ? Clean::entier($_GET['id']) : $BASE; $BASE = isset($_GET['base']) ? Clean::entier($_GET['base']) : $BASE; // Test si UAI d'établissement transmis dans l'URL $BASE = isset($_GET['uai']) ? DB_WEBMESTRE_PUBLIC::DB_recuperer_structure_id_base_for_UAI(Clean::uai($_GET['uai'])) : $BASE; } // Test si affichage d'un formulaire spécial, autres liens de bascule $partenaire_possible = IS_HEBERGEMENT_SESAMATH && HEBERGEUR_INSTALLATION == 'multi-structures' ? TRUE : FALSE;
define('CHEMIN_FICHIER_CONFIG_MYSQL', CHEMIN_DOSSIER_MYSQL . $fichier_mysql_config . '.php'); if (is_file(CHEMIN_FICHIER_CONFIG_MYSQL)) { require CHEMIN_FICHIER_CONFIG_MYSQL; require CHEMIN_DOSSIER_INCLUDE . $fichier_class_config . '.php'; } elseif ($PAGE != 'public_installation') { exit_error('Paramètres BDD manquants', 'Les paramètres de connexion à la base de données n\'ont pas été trouvés.<br />C\'est probablement votre première installation de SACoche, ou bien le fichier "' . FileSystem::fin_chemin(CHEMIN_FICHIER_CONFIG_MYSQL) . '" a été supprimé.<br />Cliquer sur le lien ci-dessous.', 'install'); } } // Authentification requise par SSO if (Session::$_sso_redirect) { require CHEMIN_DOSSIER_PAGES . 'public_login_SSO.php'; } // Suppression du cookie provisoire ayant servi à mémoriser des paramètres multiples transmis en GET dans le cas où le service d'authentification externe en perd. // C'est le cas lors de l'appel d'un IdP de type RSA FIM, application nationale du ministère... if (isset($_COOKIE[COOKIE_MEMOGET])) { Cookie::effacer(COOKIE_MEMOGET); } // Authentification pour le compte d'une application tierce if (isset($_GET['url_redirection'])) { $url_redirection = urldecode($_GET['url_redirection']); if ($_SESSION['USER_PROFIL_SIGLE'] == 'OUT') { // User non connecté -> Retenir la demande en attendant qu'il se connecte $_SESSION['MEMO_GET']['url_redirection'] = $url_redirection; } else { // User connecté -> Redirection vers l'application, avec une clef (ticket) pour attester du login et permettre de récupérer ses infos $clef = FileSystem::fabriquer_fichier_user_infos_for_appli_externe(); unset($_SESSION['MEMO_GET']); $separateur = strpos($url_redirection, '?') === FALSE ? '?' : '&'; exit_redirection($url_redirection . $separateur . 'clef=' . $clef); } }
public static function close($is_initialized=TRUE) { // Pas besoin de session_start() car la session a déjà été ouverte avant appel à cette fonction. $_SESSION = array(); session_unset(); Cookie::effacer(session_name()); if($is_initialized) { session_destroy(); } }