mot de passe vide bloque le formulaire de réinitialisation du mot de passe d'un utilisateur
Scénario type:
- un administrateur crée des comptes pour de futurs utilisateurs en renseignant nom, mail, login mais SANS mot de passe
- il envoie un mail à ces utilisateurs en leur donnant l'URL de la page "J'ai perdu mon mot de passe" (.../spip.php?page=spip_pass) afin qu'ils génèrent leur mot de passe
- l'utilisateur saisit son mail dans le formulaire de cette page squelettes-dist/formulaires/oubli.html et il se prend en retour "Erreur : vous n’avez plus accès à ce site." Pour l'instant la seule alternative est de créer un mot de passe quelconque lors de la création du compte de l'utilisateur.
Y a t'il une raison valide pour expliquer cette restriction de mot de passe vide à la réinitialisation?
Sinon, le patch semble rapide: ligne 85 de squelettes-dist/formulaires/oubli.php remplacer:
} elseif ($r[1]['statut'] == '5poubelle' or $r[1]['pass'] == '') {
par
} elseif ($r[1]['statut'] == '5poubelle') {
[EDIT] ...et le patch n'est pas si rapide puisque le contrôle du passe vide est repris aussi dans la fonction retrouve_auteur de squelette-dist/formulaires/mot_de_passe.php... qui pourrait être modifié de la même manière:
function retrouve_auteur($id_auteur, $jeton = '') { if ($id_auteur = intval($id_auteur)) { return sql_fetsel( '*', 'spip_auteurs', array('id_auteur=' . intval($id_auteur), "statut<>'5poubelle'", "pass<>''") ); } elseif ($jeton) { include_spip('action/inscrire_auteur'); if ($auteur = auteur_verifier_jeton($jeton) and $auteur['statut'] <> '5poubelle' and $auteur['pass'] <> '' ) { return $auteur; } } return false; }
remplacé par:
function retrouve_auteur($id_auteur, $jeton = '') { if ($id_auteur = intval($id_auteur)) { return sql_fetsel( '*', 'spip_auteurs', array('id_auteur=' . intval($id_auteur), "statut<>'5poubelle'") ); } elseif ($jeton) { include_spip('action/inscrire_auteur'); if ($auteur = auteur_verifier_jeton($jeton) and $auteur['statut'] <> '5poubelle' ) { return $auteur; } } return false; }