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:
<pre>
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;
}
</pre>
remplacé par:
<pre>
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;
}
</pre>
issue