Salut tout le monde !
Déjà un grand merci à tout le monde pour ce formidable CMS qu’est SPIP !!!
J’ai trouvé un bug sur le formulaire d’inscription ( SPIP 4.0.5 mais surement aussi anterieur), aucun test n’est fait pour vérifier que le login n’existe pas déjà. Il en résulte qu’on peut créer un 2e utilisateur avec le même login.
J’ai fais ma petite correction (je ne suis pas encore bien a l’aise pour le pousser dans git) et donc je vous la propose. J’ai modifier le fichier /squelettes-dist/formulaires/inscription.php, plus spécifiquement la fonction formulaires_inscription_verifier_dist
J’ai ajouté :
include_spip('auth/spip');
et modifié (ajout du dernier elseif) :
if (!$nom = _request('nom_inscription')) {
$erreurs['nom_inscription'] = _T('info_obligatoire');
} elseif (!nom_acceptable(_request('nom_inscription'))) {
$erreurs['nom_inscription'] = _T('ecrire:info_nom_pas_conforme');
} elseif ($msgerr = auth_spip_verifier_login(_request('nom_inscription'))) {
$erreurs['nom_inscription'] = $msgerr;
}
ce qui donne au final :
function formulaires_inscription_verifier_dist($mode = '', $id_ou_options = 0, $retour = '') {
set_request('_upgrade_auteur'); // securite
include_spip('inc/filtres');
include_spip('auth/spip');
$erreurs = array();
// Compatibilité avec l'ancien param "id" dans les deux sens
list($options, $id) = formulaires_inscription_arguments_id_options($id_ou_options);
include_spip('inc/autoriser');
if (!autoriser('inscrireauteur', $mode, $id)
or (strlen(_request('nobot')) > 0)
) {
$erreurs['message_erreur'] = _T('pass_rien_a_faire_ici');
}
if (!$nom = _request('nom_inscription')) {
$erreurs['nom_inscription'] = _T('info_obligatoire');
} elseif (!nom_acceptable(_request('nom_inscription'))) {
$erreurs['nom_inscription'] = _T('ecrire:info_nom_pas_conforme');
} elseif ($msgerr = auth_spip_verifier_login(_request('nom_inscription'))) {
$erreurs['nom_inscription'] = $msgerr;
}
if (!$mail = strval(_request('mail_inscription'))) {
$erreurs['mail_inscription'] = _T('info_obligatoire');
}
// compatibilite avec anciennes fonction surchargeables
// plus de definition par defaut
if (!count($erreurs)) {
include_spip('action/inscrire_auteur');
if (function_exists('test_inscription')) {
$f = 'test_inscription';
} else {
$f = 'test_inscription_dist';
}
$declaration = $f($mode, $mail, $nom, $options);
if (is_string($declaration)) {
$k = (strpos($declaration, 'mail') !== false) ?
'mail_inscription' : 'nom_inscription';
$erreurs[$k] = _T($declaration);
} else {
include_spip('base/abstract_sql');
if ($row = sql_fetsel(
'statut, id_auteur, login, email',
'spip_auteurs',
'email=' . sql_quote($declaration['email'])
)) {
if (($row['statut'] == '5poubelle') and empty($declaration['pass'])) {
// irrecuperable
$erreurs['message_erreur'] = _T('form_forum_access_refuse');
} else {
if (($row['statut'] != 'nouveau') and empty($declaration['pass'])) {
if (intval($row['statut']) > intval($mode)) {
set_request('_upgrade_auteur', $row['id_auteur']);
} else {
// deja inscrit
$erreurs['message_erreur'] = _T('form_forum_email_deja_enregistre');
}
}
}
spip_log($row['id_auteur'] . ' veut se resinscrire');
}
}
}
return $erreurs;
}
J’ai fait mes petits test, ça a l’air de fonctionner.
Merci,
Bredt