/** * Définir un cookie avec le contenu de paramètres transmis en GET puis rappeler la page * * @param string $query_string éventuellement avec 'url_redirection' en dernier paramètre * @return void */ public static function save_get_and_exit_reload( $query_string ) { Cookie::definir( COOKIE_MEMOGET , $query_string , 300 /* 60*5 = 5 min */ ); $param_redir_pos = mb_strpos($query_string,'&url_redirection'); $param_sans_redir = ($param_redir_pos) ? mb_substr( $query_string , 0 , $param_redir_pos ) : $query_string ; // J'ai déjà eu un msg d'erreur car il n'aime pas les chaines trop longues + Pas la peine d'encombrer avec le paramètre de redirection qui sera retrouvé dans le cookie de toutes façons exit_redirection(URL_BASE.$_SERVER['SCRIPT_NAME'].'?'.$param_sans_redir); }
// 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); } } // Page CNIL si message d'information CNIL non validé. if (isset($_SESSION['STOP_CNIL'])) { Session::$tab_message_erreur[] = 'Avant d\'utiliser <em>SACoche</em>, vous devez valider le formulaire ci-dessous.'; $PAGE = 'compte_cnil'; } // Fichier de données de la page concernée $filename_php = CHEMIN_DOSSIER_PAGES . $PAGE . '.php'; if (!is_file($filename_php)) { Session::$tab_message_erreur[] = 'Fichier ' . FileSystem::fin_chemin($filename_php) . ' manquant ; redirection vers une page d\'accueil.'; $PAGE = $_SESSION['USER_PROFIL_TYPE'] == 'public' ? 'public_accueil' : (isset($_SESSION['STOP_CNIL']) ? 'compte_cnil' : 'compte_accueil'); $filename_php = CHEMIN_DOSSIER_PAGES . $PAGE . '.php'; } // Contenu à afficher récupéré dans une variable