From 7d4148c9e8e005d39d6da6c92c1608d082f28057 Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Thu, 28 Aug 2008 17:36:36 +0000 Subject: [PATCH] complement de [12437] et resolution du bug de logins consecutifs sous FF3 : - on garde la denomination originelle informer_auteur car il ne s'agit pas d'une authentification - inc-logo_auteur.html doit etre dans prive/ et non dans dist/ - le filtre ad-hoc pour le squelette va dans un fichier fonctions associe plutot qu'alourdir inc/filtres - un jeton avec la date est passe a informer_auteur pour empecher la mise en cache par les navigateurs (FF3 notamment) ou proxy malgre le header --- .gitattributes | 5 ++-- ecrire/inc/filtres.php | 14 ---------- prive/authentifier_login.html | 1 - .../formulaires/inc-logo_auteur.html | 0 prive/formulaires/login.html | 3 ++- prive/informer_auteur.html | 1 + prive/informer_auteur_fonctions.php | 27 +++++++++++++++++++ prive/style_prive_fonctions.php | 10 +++++++ 8 files changed, 43 insertions(+), 18 deletions(-) delete mode 100644 prive/authentifier_login.html rename {dist => prive}/formulaires/inc-logo_auteur.html (100%) create mode 100644 prive/informer_auteur.html create mode 100644 prive/informer_auteur_fonctions.php diff --git a/.gitattributes b/.gitattributes index ff253ffe1e..49997013d2 100644 --- a/.gitattributes +++ b/.gitattributes @@ -10,7 +10,6 @@ dist/formulaires/inc-choix_mots.html -text dist/formulaires/inc-forum_ajouter_mot.html -text dist/formulaires/inc-forum_bloc_choix_mots.html -text dist/formulaires/inc-login_forum_abo.html -text -dist/formulaires/inc-logo_auteur.html -text dist/formulaires/inscription.php -text dist/formulaires/mot_de_passe.html -text dist/formulaires/mot_de_passe.php -text @@ -451,7 +450,6 @@ ecrire/xml/interfaces.php -text ecrire/xml/valider.php -text /index.php -text local/remove.txt -text -prive/authentifier_login.html -text prive/contenu/article.html -text prive/contenu/breve.html -text prive/contenu/rubrique.html -text @@ -478,6 +476,7 @@ prive/formulaires/editer_rubrique.php -text prive/formulaires/editer_site.html -text prive/formulaires/editer_site.php -text prive/formulaires/editer_site_fonctions.php -text +prive/formulaires/inc-logo_auteur.html -text prive/formulaires/login.php -text prive/formulaires/selecteur_groupe_mot.html -text prive/formulaires/selecteur_groupe_mot_fonctions.php -text @@ -726,6 +725,8 @@ prive/images/warning-24.gif -text prive/images/warning.gif -text prive/images/wrapper.php -text prive/images/xml.gif -text +prive/informer_auteur.html -text +prive/informer_auteur_fonctions.php -text prive/infos/article.html -text prive/infos/article_fonctions.php -text prive/infos/auteur.html -text diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php index 72f93643e5..bddeb0630d 100644 --- a/ecrire/inc/filtres.php +++ b/ecrire/inc/filtres.php @@ -655,20 +655,6 @@ function securiser_acces($id_auteur, $cle, $dir, $op='', $args='') return verifier_low_sec($id_auteur, $cle, $dir); } -// Filtre ad hoc pour le formulaire de login: -// le parametre var_login n'est pas dans le contexte pour optimiser le cache -// il faut aller le chercher a la main -function authentifier_login($bof) -{ - include_spip('inc/json'); - include_spip('inc/identifier_login'); - $row = informer_login(_request('var_login')); - if (is_array($row)) - unset($row['id_auteur']); - else $row = array(); - return json_export($row); -} - // sinon{texte, rien} : affiche "rien" si la chaine est vide, // affiche la chaine si non vide ; // attention c'est compile directement dans inc/references diff --git a/prive/authentifier_login.html b/prive/authentifier_login.html deleted file mode 100644 index eb943d5ced..0000000000 --- a/prive/authentifier_login.html +++ /dev/null @@ -1 +0,0 @@ -#HTTP_HEADER{Content-Type: text/plain}#CACHE{0}[(#DATE|authentifier_login)][(#REM) Tordu, mais l'optim du cache ne donne pas acces a var_login)] \ No newline at end of file diff --git a/dist/formulaires/inc-logo_auteur.html b/prive/formulaires/inc-logo_auteur.html similarity index 100% rename from dist/formulaires/inc-logo_auteur.html rename to prive/formulaires/inc-logo_auteur.html diff --git a/prive/formulaires/login.html b/prive/formulaires/login.html index 97255cb44a..5e4584fd68 100644 --- a/prive/formulaires/login.html +++ b/prive/formulaires/login.html @@ -96,7 +96,8 @@ function actualise_auteur(){ if (login != jQuery('#var_login').attr('value')) { informe_auteur_en_cours = true; login = jQuery('#var_login').attr('value'); - jQuery.get('#URL_PAGE{authentifier_login}',{var_login:login},informe_auteur); + var currentTime = new Date();// on passe la date en var pour empecher la mise en cache de cette requete (bug avec FF3 & IE7) + jQuery.get('#URL_PAGE{informer_auteur}',{var_login:login,var_compteur:currentTime.getTime()},informe_auteur); } } jQuery('#password') diff --git a/prive/informer_auteur.html b/prive/informer_auteur.html new file mode 100644 index 0000000000..1f76153f9e --- /dev/null +++ b/prive/informer_auteur.html @@ -0,0 +1 @@ +#HTTP_HEADER{Content-Type: text/plain}#CACHE{0}[(#DATE|informer_auteur)][(#REM) Tordu, mais l'optim du cache ne donne pas acces a var_login)] \ No newline at end of file diff --git a/prive/informer_auteur_fonctions.php b/prive/informer_auteur_fonctions.php new file mode 100644 index 0000000000..6bfa8d43c0 --- /dev/null +++ b/prive/informer_auteur_fonctions.php @@ -0,0 +1,27 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2008 * + * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * + * * + * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * + * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * +\***************************************************************************/ + +// Filtre ad hoc pour le formulaire de login: +// le parametre var_login n'est pas dans le contexte pour optimiser le cache +// il faut aller le chercher a la main +function informer_auteur($bof) +{ + include_spip('inc/json'); + include_spip('inc/identifier_login'); + $row = informer_login(_request('var_login')); + if (is_array($row)) + unset($row['id_auteur']); + else $row = array(); + return json_export($row); +} + +?> \ No newline at end of file diff --git a/prive/style_prive_fonctions.php b/prive/style_prive_fonctions.php index a55348a03e..739478a3bc 100644 --- a/prive/style_prive_fonctions.php +++ b/prive/style_prive_fonctions.php @@ -1,5 +1,15 @@ <?php +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2008 * + * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * + * * + * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * + * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * +\***************************************************************************/ + function image_bg ($img, $couleur, $pos="") { if (function_exists("imagecreatetruecolor")) return "background: url(".url_absolue(extraire_attribut(image_sepia($img, $couleur), "src")).") $pos;"; else return "background-color: #$couleur;"; -- GitLab