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