Skip to content
Extraits de code Groupes Projets
Valider 9d8b44a7 rédigé par esj's avatar esj
Parcourir les fichiers

Incohérences dans la mise à jour des préférences pour l'authentification sans...

Incohérences dans la mise à jour des préférences pour l'authentification sans cookie. Tant qu'à faire partager le code. Et retirer des includes superflus.
parent 50ce59f4
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -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);
}
}
......
......@@ -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);
......
......@@ -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);
}
......
......@@ -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);
}
}
}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter