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));
}
Beispiel #2
0
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;
}
Beispiel #3
0
 * 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&amp;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;
Beispiel #4
0
    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);
    }
}
Beispiel #5
0
 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();
   }
 }