From 9d8b44a7ba252eb758ef96a0c3d2a6a22908e9e5 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Fri, 31 Mar 2006 17:07:57 +0000 Subject: [PATCH] =?UTF-8?q?Incoh=C3=A9rences=20dans=20la=20mise=20=C3=A0?= =?UTF-8?q?=20jour=20des=20pr=C3=A9f=C3=A9rences=20pour=20l'authentificati?= =?UTF-8?q?on=20sans=20cookie.=20Tant=20qu'=C3=A0=20faire=20partager=20le?= =?UTF-8?q?=20code.=20Et=20retirer=20des=20includes=20superflus.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/action/cookie.php | 10 +++------- ecrire/inc/session.php | 17 +++++++++++++++-- ecrire/inc/utils.php | 2 +- ecrire/index.php | 17 ++++++----------- 4 files changed, 25 insertions(+), 21 deletions(-) diff --git a/ecrire/action/cookie.php b/ecrire/action/cookie.php index 96bc674116..106057dc66 100644 --- a/ecrire/action/cookie.php +++ b/ecrire/action/cookie.php @@ -221,9 +221,8 @@ if ($cookie_session) { $prefs = ($row_auteur['prefs']) ? unserialize($row_auteur['prefs']) : array(); $prefs['cnx'] = ($session_remember == 'oui') ? 'perma' : ''; - spip_query ("UPDATE spip_auteurs SET prefs = '".addslashes(serialize($prefs))."' WHERE id_auteur = ".$row_auteur['id_auteur']); - -} + update_prefs_session($prefs, $row_auteur['id_auteur']); + } // changement de langue espace public if ($var_lang) { @@ -244,11 +243,8 @@ if ($var_lang_ecrire) { spip_setcookie('spip_lang', $var_lang_ecrire, time() + 365 * 24 * 3600); if (_FILE_CONNECT AND $id_auteur) { - include_spip('inc/admin'); if (verifier_action_auteur('var_lang_ecrire', $valeur, $id_auteur)) { - spip_query ("UPDATE spip_auteurs SET lang = '".addslashes($var_lang_ecrire)."' WHERE id_auteur = ".$id_auteur); - $auteur_session['lang'] = $var_lang_ecrire; - ajouter_session($auteur_session, $spip_session); // enregistrer dans le fichier de session + ajouter_session($auteur_session, $spip_session, $var_lang_ecrire); } } diff --git a/ecrire/inc/session.php b/ecrire/inc/session.php index bd4969584d..75c1e10844 100644 --- a/ecrire/inc/session.php +++ b/ecrire/inc/session.php @@ -44,7 +44,16 @@ function fichier_session($id_session, $alea) { // // Ajouter une session pour l'auteur specifie // -function ajouter_session($auteur, $id_session) { +function ajouter_session($auteur, $id_session, $lang='') { + + global $connect_id_auteur, $auteur_session; + + if ($lang) { + spip_query ("UPDATE spip_auteurs SET lang = '". addslashes($lang) . + "' WHERE id_auteur = $connect_id_auteur"); + $auteur_session['lang'] = $lang; + } + renouvelle_alea(); $fichier_session = fichier_session($id_session, $GLOBALS['meta']['alea_ephemere']); $vars = array('id_auteur', 'nom', 'login', 'email', 'statut', 'lang', 'ip_change', 'hash_env'); @@ -60,6 +69,11 @@ function ajouter_session($auteur, $id_session) { redirige_par_entete(generer_url_action('test_dirs','',true)); } +function update_prefs_session($prefs, $id_auteur) +{ + spip_query ("UPDATE spip_auteurs SET prefs = '".addslashes(serialize($prefs))."' WHERE id_auteur = $id_auteur"); +} + // // Verifier et inclure une session // @@ -236,7 +250,6 @@ function renouvelle_alea() { if (abs(time() - $GLOBALS['meta']['alea_ephemere_date']) > 2 * 24*3600) { spip_log("renouvellement de l'alea_ephemere"); - include_spip('inc/session'); $alea = md5(creer_uniqid()); ecrire_meta('alea_ephemere_ancien', $GLOBALS['meta']['alea_ephemere']); ecrire_meta('alea_ephemere', $alea); diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 63c7a96890..66d948eea0 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -638,7 +638,7 @@ function find_in_path ($filename) { function autoriser_sans_cookie($nom) { - static $autsanscookie = array('aide_index', 'install', 'admin_repair', 'spip_cookie'); + static $autsanscookie = array('aide_index', 'install', 'admin_repair'); $nom = preg_replace('/.php[3]?$/', '', basename($nom)); return in_array($nom, $autsanscookie); } diff --git a/ecrire/index.php b/ecrire/index.php index 4eee1d1dc9..8f5b3cfbbe 100644 --- a/ecrire/index.php +++ b/ecrire/index.php @@ -78,15 +78,15 @@ if (!preg_match(',^[a-z][0-9a-z_]*$,i', $exec)) $exec = "accueil"; // Authentification, redefinissable // -$var_auth =""; if (autoriser_sans_cookie($exec)) { if (!isset($reinstall)) $reinstall = 'non'; + $var_auth = true; } else { include_spip('inc/session'); $var_auth = charger_fonction('auth', 'inc'); $var_auth = $var_auth(); if ($var_auth) redirige_par_entete($var_auth); -} + } // // Preferences de presentation @@ -104,9 +104,8 @@ if ($set_options == 'avancees' OR $set_options == 'basiques') { $prefs['options'] = $set_options; $prefs_mod = true; } -if ($prefs_mod) { - spip_query ("UPDATE spip_auteurs SET prefs = '".addslashes(serialize($prefs))."' WHERE id_auteur = $connect_id_auteur"); -} +if ($prefs_mod AND !$var_auth) + update_prefs_session($prefs, $connect_id_auteur); if ($set_ecran) { // Poser un cookie, car ce reglage depend plus du navigateur que de l'utilisateur @@ -141,16 +140,12 @@ include_spip('inc/minipres'); if ($spip_lang_ecrire = $GLOBALS['_COOKIE']['spip_lang_ecrire']) { // si pas authentifie, changer juste pour cette execution - if (!$var_auth) + if ($var_auth) changer_langue($spip_lang_ecrire); // si authentifie, changer definitivement si ce n'est fait else { if (($spip_lang_ecrire <> $auteur_session['lang']) AND changer_langue($spip_lang_ecrire)) { - spip_query ("UPDATE spip_auteurs SET lang = '". - addslashes($spip_lang_ecrire) . - "' WHERE id_auteur = $connect_id_auteur"); - $auteur_session['lang'] = $spip_lang_ecrire; - ajouter_session($auteur_session, $spip_session); + ajouter_session($auteur_session, $spip_session, $spip_lang_ecrire); } } } -- GitLab