From ea99f43b43f4f238882a1af24988ba2ec3bbfb8f Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Wed, 3 Jul 2002 23:57:42 +0000
Subject: [PATCH] suite restauration espace public

---
 inc-forum.php3   | 23 ++++++++-----------
 inc-public.php3  |  9 +++++---
 inc-stats.php3   |  7 ++++--
 spip_cookie.php3 | 58 +++++++++++++++++++++++++++++++++++++++++-------
 4 files changed, 70 insertions(+), 27 deletions(-)

diff --git a/inc-forum.php3 b/inc-forum.php3
index 2992e2533f..22235ea1fe 100644
--- a/inc-forum.php3
+++ b/inc-forum.php3
@@ -140,7 +140,7 @@ function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_synd
 
 	$ret .= "\n<a name='formulaire_forum'></a>\n";
 	$ret .= "\n<FORM ACTION='$lien' METHOD='post'>";
-	$ret .= "\n<B>VOTRE MESSAGE...</B><p>";
+	//$ret .= "\n<B>VOTRE MESSAGE...</B><p>";
 	
 	if ($forums_publics == "pri") {
 		$ret.= "Ce forum est mod&eacute;r&eacute; &agrave; priori&nbsp;: votre contribution n'appara&icirc;tra qu'apr&egrave;s avoir &eacute;t&eacute; valid&eacute;e par un administrateur du site.<P>";
@@ -196,7 +196,7 @@ function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_synd
 	
 		
 	
-	if (!$nouveau_document){
+	if (!$nouveau_document AND $afficher_texte != 'non'){
 		$ret .= "<div class='spip_encadrer'>";
 		if ($afficher_texte != "non"){
 			$ret .= "<font size=4 color='#aaaaaa'><b>".propre($titre)."</b></font>";
@@ -230,17 +230,9 @@ function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_synd
 		$ret .= "</div>\n<p>";
 	}
 	
-	/*
-	if ($forums_publics == "pri") {
-		$ret.= "Ce forum est mod&eacute;r&eacute; &agrave; priori&nbsp;: votre contribution n'appara&icirc;tra qu'apr&egrave;s avoir &eacute;t&eacute; valid&eacute;e par un administrateur du site.<P>";
-	}	
+	$ret .= "\n";
 	
-	if ($forums_publics == "abo") {
-		$ret.= '<? include("inc-forum.php3"); forum_abonnement(); ?'.'>';
-	}
-	*/
 	
-	$ret .= "\n";
 
 	$seed = (double) (microtime() + 1) * time() * 1000000;
 	@mt_srand($seed);
@@ -385,7 +377,9 @@ function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_synd
 		$ret .= "\n<INPUT TYPE='text' CLASS='forml' NAME='email_auteur' VALUE=\"$email_auteur\" SIZE='40'></div>";
 	}
 
-	$ret .= "\n<p><DIV ALIGN='right'><INPUT TYPE='submit' NAME='Valider' CLASS='spip_bouton' VALUE='Voir ce message avant de le poster'></DIV>";
+	if ($afficher_texte !="non") $ret .= "\n<p><DIV ALIGN='right'><INPUT TYPE='submit' NAME='Valider' CLASS='spip_bouton' VALUE='Voir ce message avant de le poster'></DIV>";
+	else  $ret .= "\n<p><DIV ALIGN='right'><INPUT TYPE='submit' NAME='Valider' CLASS='spip_bouton' VALUE='Valider ce choix'></DIV>";
+	
 	$ret .= "</FORM>";
 	
 	return $ret;
@@ -398,7 +392,8 @@ function ajout_forum() {
 	global $forum_id_rubrique, $forum_id_parent, $forum_id_article, $forum_id_breve, $forum_id_auteur, $forum_id_syndic, $alea, $hash;
 	global $hash_email, $email_forum_abo, $pass_forum_abo, $ajouter_mot;
 	global $HTTP_HOST, $REQUEST_URI, $HTTP_COOKIE_VARS, $REMOTE_ADDR;
-
+	$afficher_texte = $GLOBALS['afficher_texte'];
+	
 	if (!$GLOBALS['db_ok']) {
 		die ("<h4>Probl&egrave;me de base de donn&eacute;es, votre message n'a pas &eacute;t&eacute; enregistr&eacute;.</h4>");
 	}
@@ -538,7 +533,7 @@ function ajout_forum() {
 
 
 	
-	if (strlen($confirmer) > 0) {
+	if (strlen($confirmer) > 0 OR ($afficher_texte=='non' AND $ajouter_mot)) {
 		spip_query("UPDATE spip_forum SET statut=\"$etat\" WHERE id_forum='$id_message'");
 	
 
diff --git a/inc-public.php3 b/inc-public.php3
index 2fcc303e5b..1f3c403e79 100644
--- a/inc-public.php3
+++ b/inc-public.php3
@@ -58,6 +58,7 @@ $fichier_requete = $REQUEST_URI;
 $fichier_requete = strtr($fichier_requete, '?', '&');
 $fichier_requete = eregi_replace('&(submit|valider|(var_[^=&]*)|recalcul)=[^&]*', '', $fichier_requete);
 
+
 $fichier_cache = generer_nom_fichier_cache($fichier_requete);
 $chemin_cache = "CACHE/".$fichier_cache;
 
@@ -77,9 +78,9 @@ else {
 // Authentification, le cas echeant
 //
 $auteur_session = '';
-if ($cookie = $HTTP_COOKIE_VARS['spip_session']) {
+if ($HTTP_COOKIE_VARS['spip_session'] OR $PHP_AUTH_USER) {
 	include_ecrire ("inc_session.php3");
-	verifier_session($cookie);
+	verifier_visiteur();
 }
 
 
@@ -331,7 +332,9 @@ if ($spip_session) {
 if ($id_article AND lire_meta("activer_statistiques") != "non" AND !$flag_preserver) {
 	include_ecrire("inc_connect.php3");
 	include_local ("inc-stats.php3");
-	if ($db_ok) ecrire_stats();
+	if ($db_ok) $stats = ecrire_stats();
+	
+	if ($admin_ok) echo $stats;
 }
 
 
diff --git a/inc-stats.php3 b/inc-stats.php3
index 9b514ee1d6..cc8d793535 100644
--- a/inc-stats.php3
+++ b/inc-stats.php3
@@ -10,6 +10,7 @@ function ecrire_stats() {
 	global $id_article;
 	global $admin_ok;
 
+
 	$my_ref = $HTTP_REFERER;
 	$my_ref = "\n".substr(md5($my_ref), 0, 15);
 
@@ -19,7 +20,7 @@ function ecrire_stats() {
 	if ($row = mysql_fetch_array($result)) {
 		$visites = $row['visites'];
 		$referers = $row['referers'];
-
+		
 		$visites++;
 
 		if (!ereg($my_ref, $referers)) {
@@ -31,7 +32,9 @@ function ecrire_stats() {
 		}
 
 		$num_ref = strlen($referers) / 16;
-		if ($admin_ok) echo "<small>[$visites visites - $num_ref referers]</small>";
+		if ($admin_ok) {
+			return "<small>[$visites visites - $num_ref referers]</small>";
+		}
 	}
 }
 
diff --git a/spip_cookie.php3 b/spip_cookie.php3
index b605bbc551..d5fd066e35 100644
--- a/spip_cookie.php3
+++ b/spip_cookie.php3
@@ -5,6 +5,22 @@ include_ecrire ("inc_connect.php3");
 include_ecrire ("inc_meta.php3");
 include_ecrire ("inc_session.php3");
 
+// si demande auth_http
+if ($essai_auth_http == 'oui') {
+	include_ecrire('inc_session.php3');
+	if (! verifier_php_auth()) {
+		ask_php_auth("<b>Connexion refus&eacute;e.</b><p>(Login ou mot de passe incorrect.)<p>[<a href='./'>Retour au site public</a>] [<a href='./spip_cookie.php3?essai_auth_http=oui&redirect=./ecrire/'>Nouvelle tentative</a>] [<a href='./ecrire/'>espace priv&eacute</a>]");
+	} else {
+		@header("Location: $redirect");
+	}
+	exit;
+}
+// si demande logout auth_http
+else if ($essai_auth_http == 'logout') {
+	include_ecrire('inc_session.php3');
+	ask_php_auth("<b>D&eacute;connexion effectu&eacute;e.</b><p>(V&eacute;rifiez toutefois que votre navigateur n'a pas m&eacute;moris&eacute; votre mot de passe...)<p>[<a href='./'>Retour au site public</a>] [<a href='./spip_cookie.php3?essai_auth_http=oui&redirect=./ecrire/'>test navigateur/reconnexion</a>] [<a href='./ecrire/'>espace priv&eacute</a>]");
+	exit;
+}
 
 // rejoue le cookie pour renouveler spip_session
 if ($change_session == "oui") {
@@ -28,26 +44,52 @@ if ($cookie_session == "non") {
 	setcookie('spip_session', $spip_session, time() - 3600 * 24);
 }
 else if ($essai_login == "oui") {
-	// verifie l'auteur
-	if ($session_password_md5)
-		$md5pass = $session_password_md5;
-	else
-		$md5pass = md5($session_password);
+	// recuperer le login passe en champ hidden
+	if ($session_login_hidden AND ! $session_login)	$session_login=$session_login_hidden;	
 
+	// verifier l'auteur
 	$login = addslashes($session_login);
-	$query = "SELECT * FROM spip_auteurs WHERE login='$login' AND pass='$md5pass'";
+	if ($session_password_md5) {
+		$md5pass = $session_password_md5;
+		$md5next = $next_session_password_md5;
+	} else {
+		$query = "SELECT * FROM spip_auteurs WHERE login='$login'";
+		$result = spip_query($query);
+		if ($row = mysql_fetch_array($result)) {
+			$md5pass = md5($row['alea_actuel'] . $session_password);
+			$md5next = md5($row['alea_futur'] . $session_password);
+		}
+	}
+
+	$query = "SELECT * FROM spip_auteurs WHERE login='$login' AND pass='$md5pass' AND statut<>'5poubelle'";
 	$result = spip_query($query);
 
 	if ($row_auteur = mysql_fetch_array($result)) {
+		if ($row_auteur['statut'] == 'nouveau') { // nouvel inscrit
+			spip_query ("UPDATE spip_auteurs SET statut='1comite' WHERE login='$login'");
+			$row_auteur['statut'] = '1comite';
+		}
+
 		if ($row_auteur['statut'] == '0minirezo') { // force le cookie pour les admins
 			$cookie_admin = "@".$row_auteur['login'];
 		}
 		if ($zap_sessions) zap_sessions($row_auteur['login'], true);
 		$cookie_session = creer_cookie_session($row_auteur);
 		setcookie('spip_session', $cookie_session, time() + 3600 * 24 * 7);
+
+
+		// ici on fait tourner le codage du pass dans la base
+		// retournera une erreur si la base n'est pas mise a jour...
+		$nouvel_alea_futur = creer_uniqid();
+		$query = "UPDATE spip_auteurs
+			SET alea_actuel = alea_futur,
+				pass = '$md5next',
+				alea_futur = '$nouvel_alea_futur'
+			WHERE login='$login'";
+		@spip_query($query);
 	}
 	else if ($redirect_echec) {
-		@header("Location: $redirect_echec");
+		@header("Location: $redirect_echec?login=$login&erreur=pass");
 		exit;
 	}
 }
@@ -65,4 +107,4 @@ if (!$redirect) $redirect = './index.php3';
 
 @header("Location: $redirect");
 
-?>
\ No newline at end of file
+?>
-- 
GitLab