Skip to content
Extraits de code Groupes Projets
Valider 9789cd22 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

fix: ne pas permettre de changer le mot de passe d'un auteur dont le login est...

fix: ne pas permettre de changer le mot de passe d'un auteur dont le login est vide + passer par `auth_identifier_login()` pour verifier son droit à être logé
avant de le loger effectivement

Refs: https://git.spip.net/spip-team/securite/issues/4837
parent 02c9ebd3
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!4862fix: robustesse de la procédure de changement de mot de passe
......@@ -21,13 +21,14 @@ function retrouve_auteur($id_auteur, $jeton = '') {
return sql_fetsel(
'*',
'spip_auteurs',
array('id_auteur=' . intval($id_auteur), "statut<>'5poubelle'", "pass<>''")
array('id_auteur=' . intval($id_auteur), "statut<>'5poubelle'", "pass<>''", "login<>''")
);
} elseif ($jeton) {
include_spip('action/inscrire_auteur');
if ($auteur = auteur_verifier_jeton($jeton)
and $auteur['statut'] <> '5poubelle'
and $auteur['pass'] <> ''
and $auteur['login'] <> ''
) {
return $auteur;
}
......@@ -140,7 +141,7 @@ function formulaires_mot_de_passe_traiter_dist($id_auteur = null, $jeton = null)
$res = array('message_erreur' => $err);
} else {
auteur_effacer_jeton($id_auteur);
// Par défaut, on rappelle de s'identifier avec son email s'il existe
// et qu'il n'est PAS utilisé par quelqu'un d'autre
if (
......@@ -165,8 +166,13 @@ function formulaires_mot_de_passe_traiter_dist($id_auteur = null, $jeton = null)
'<br />' . _T('pass_rappel_login', array('login' => $identifiant));
include_spip('inc/auth');
$row = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
auth_loger($row);
$auth = auth_identifier_login($row['login'], $oubli);
if (!is_array($auth)) {
spip_log("Erreur identification ".$row['login']." après changement de mot de passe: $auth", _LOG_ERREUR);
}
elseif ($auth['id_auteur'] == $id_auteur) {
auth_loger($auth);
}
}
}
......
......@@ -24,7 +24,7 @@ function formulaires_oubli_charger_dist() {
// https://code.spip.net/@message_oubli
function message_oubli($email, $param) {
$r = formulaires_oubli_mail($email);
if (is_array($r) and $r[1] and $r[1]['statut'] !== '5poubelle' and $r[1]['pass'] !== '') {
include_spip('inc/texte'); # pour corriger_typo
......@@ -108,7 +108,7 @@ function formulaires_oubli_mail($email) {
return array(
$declaration,
sql_fetsel('id_auteur,statut,pass', 'spip_auteurs', 'email =' . sql_quote($declaration['mail']))
sql_fetsel('id_auteur,statut,pass', 'spip_auteurs', "login<>'' AND email =" . sql_quote($declaration['mail']))
);
}
}
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter