Valider 337ad53c rédigé par cerdic's avatar cerdic
Parcourir les fichiers

le formulaire oubli est separe en deux :

#FORMULAIRE_OUBLI envoi un cookie par mail
#FORMULAIRE_MOT_DE_PASSE permet de changer son passe. L'auteur est reconnu soir par son cookie passe en &p=..., soit par le parametre {#ID_AUTEUR} passe au formulaire par le squelette.
Ajout de 2 chaines de langue au passage
parent 61a2ccf8
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+2 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -25,6 +25,8 @@ dist/formulaires/forum_bloc_choix_mots.html -text
dist/formulaires/login.php -text
dist/formulaires/login_forum_abo.html -text
dist/formulaires/logo_auteur.html -text
dist/formulaires/mot_de_passe.html -text
dist/formulaires/mot_de_passe.php -text
dist/formulaires/oubli/charger.php -text
dist/formulaires/oubli/traiter.php -text
dist/formulaires/oubli/verifier.php -text
+3 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -61,9 +61,11 @@
.formulaire_erreur {
  color: red;
}
.formfx li .erreur {color:red;}
.formfx li .erreur {color:red;display:block;}

/* messages de retour */
.formulaire_message {
  color: green;
}

.formfx .spip_bouton {text-align:right;}
 No newline at end of file
+29 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<div class="formfx formulaire_mot_de_passe">[
(#ENV*{message_erreur})
][
(#ENV*{message_ok})
][
(#ENV*{editable}|?{' '})

<form id="oubli_form" action="[(#ENV{action})]" method="post">
	[(#REM) activer le traitement auto et dispatch sur charger/verifier/traiter]
	#ACTION_FORMULAIRE{#ENV{action}}
	<fieldset>
	<legend><:pass_nouveau_pass:></legend><ol>
  <li class="obligatoire">
    <label for="oubli"><:pass_choix_pass:></label>
    <input type='password' name='oubli' id='oubli' value="#ENV**{oubli}" />
		[<span class='erreur'>(#ENV**{erreurs}|table_valeur{oubli})</span>]
  </li>
	</ol></fieldset>
	[(#REM) Piege a robots spammeurs ]
	<p style="display: none;"><label for="nobot"><:antispam_champ_vide:></label>
	<input type="text" name="nobot" id="nobot" value="#ENV{nobot}" size="10" /></p>
	<p class="spip_bouton"><input type="submit" value="<:pass_ok:>" /></p>
	</fieldset>
</form>
<script type='text/javascript'>/*<!#EVAL{chr(91)}CDATA#EVAL{chr(91)}*/
 document.getElementById('oubli').focus()
/*#EVAL{chr(93)}[(#EVAL{chr(93)})]>*/</script>
]
</div>
 No newline at end of file
+96 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<?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.   *
\***************************************************************************/

if (!defined("_ECRIRE_INC_VERSION")) return;

// chargement des valeurs par defaut des champs du formulaire
/**
 * Chargement de l'auteur qui peut changer son mot de passe.
 * Soit un cookie d'oubli fourni par #FORMULAIRE_OUBLI est passe dans l'url par &p=
 * Soit un id_auteur est passe en parametre #FORMULAIRE_MOT_DE_PASSE{#ID_AUTEUR}
 * Dans les deux cas on verifie que l'auteur est autorise
 *
 * @param int $id_auteur
 * @return array
 */
function formulaires_mot_de_passe_charger_dist($id_auteur=null){

	$valeurs = array();
	if ($id_auteur=intval($id_auteur)) {
		$id_auteur = sql_getfetsel('id_auteur','spip_auteurs',array('id_auteur='.intval($id_auteur),"statut<>'5poubelle'","pass<>''"));
	}
	elseif ($p=_request('p')) {
		$p = preg_replace(',[^0-9a-f.],i','',$p);
		if ($p AND $id_auteur = sql_getfetsel('id_auteur','spip_auteurs',array('cookie_oubli='.sql_quote($p),"statut<>'5poubelle'","pass<>''")))
			$valeurs['_hidden'] = '<input type="hidden" name="p" value="'.$p.'" />';
	}

	if ($id_auteur){
		$valeurs['id_auteur'] = $id_auteur; // a toutes fins utiles pour le formulaire
		return $valeurs;
	}
	else {
		$valeurs['_hidden'] = _T('pass_erreur_code_inconnu');
		return false; // pas de saisie
	}
}

/**
 * Verification de la saisie du mot de passe.
 * On verifie qu'un mot de passe est saisi, et que sa longuer est suffisante
 * Ce serait le lieu pour verifier sa qualite (caracteres speciaux ...)
 *
 * @param int $id_auteur
 */
function formulaires_mot_de_passe_verifier_dist($id_auteur=null){
	$erreurs = array();
	if (!_request('oubli'))
		$erreurs['oubli'] = _T('info_obligatoire');
	else if (strlen(_request('oubli')) < 6)
		$erreurs['oubli'] = _T('info_passe_trop_court');

	return $erreurs;
}

/**
 * Modification du mot de passe d'un auteur.
 * Utilise le cookie d'oubli fourni en url ou l'argument du formulaire pour identifier l'auteur
 *
 * @param int $id_auteur
 */
function formulaires_mot_de_passe_traiter_dist($id_auteur=null){
	$message = '';
	include_spip('base/abstract_sql');
	if ($id_auteur=intval($id_auteur)) {
		$row = sql_fetsel('id_auteur,login','spip_auteurs',array('id_auteur='.intval($id_auteur),"statut<>'5poubelle'","pass<>''"));
	}
	elseif ($p=_request('p')) {
		$p = preg_replace(',[^0-9a-f.],i','',$p);
		$row = sql_fetsel('id_auteur,login','spip_auteurs',array('cookie_oubli='.sql_quote($p),"statut<>'5poubelle'","pass<>''"));
	}

	if ($row
	 && ($id_auteur = $row['id_auteur'])
	 && ($oubli = _request('oubli'))) {
		include_spip('inc/acces');
		$mdpass = md5($oubli);
		$htpass = generer_htpass($oubli);
		include_spip('base/abstract_sql');
		sql_updateq('spip_auteurs', array('htpass' =>$htpass, 'pass'=>$mdpass, 'alea_actuel'=>'', 'cookie_oubli'=>''), "id_auteur=" . intval($id_auteur));
	
		$login = $row['login'];
		$message = "<b>" . _T('pass_nouveau_enregistre') . "</b>".
		"<p>" . _T('pass_rappel_login', array('login' => $login));
	}
	return $message;
}
?>
 No newline at end of file
+15 −20
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<div class="formulaire_spip formulaire_oubli">[
<div class="formfx formulaire_oubli">[
(#ENV*{message_erreur})
][
(#ENV*{message_ok})
@@ -6,28 +6,23 @@
(#ENV*{editable}|?{' '})

<form id="oubli_form" action="[(#ENV{action})]" method="post">
	[(#REM) activer le traitement auto et dispatch sur charger/valider/modifier]
	[(#REM) activer le traitement auto et dispatch sur charger/verifier/traiter]
	#ACTION_FORMULAIRE{#ENV{action}}
	<fieldset>
	<legend><:pass_nouveau_pass:></legend>[
	<input type="hidden" name="p" value="(#ENV{p})" />
	<p><label for="oubli"><:pass_choix_pass:></label><br />
	<input type="password" name="oubli" id="oubli" /></p>
	][
	(#ENV{p}|?{'',' '})
	<p><:pass_indiquez_cidessous:></p>
	<p><label for="oubli"><:form_pet_votre_email:></label><br />
	<input type="text" name="oubli" id="oubli" /></p>
	]
	<p class="spip_bouton" style="float:#LANG_RIGHT"><input type="submit" value="<:pass_ok:>" /></p>
	</fieldset>
	<legend><:pass_nouveau_pass:></legend><ol>
  <li class="obligatoire">
    <label for="oubli"><:form_pet_votre_email:></label>
    <input type='text' name='oubli' id='oubli' value="#ENV**{oubli}" />
		[<span class='erreur'>(#ENV**{erreurs}|table_valeur{oubli})</span>]
  </li>
	</ol></fieldset>
	[(#REM) Piege a robots spammeurs ]
	<p style="display: none;"><label for="nobot"><:antispam_champ_vide:></label>
	<input type="text" name="nobot" id="nobot" value="#ENV{nobot}" size="10" /></p>
	<p class="spip_bouton"><input type="submit" value="<:pass_ok:>" /></p>
</form>
]
</div>

<script type='text/javascript'>/*<!#EVAL{chr(91)}CDATA#EVAL{chr(91)}*/
[(#ENV*{editable}|?{' '})
 document.getElementById('oubli').focus()
]
/*#EVAL{chr(93)}[(#EVAL{chr(93)})]>*/</script>
]
</div>
 No newline at end of file
Chargement en cours