From 916a1c22be1a775e3ab86a566de642e2fa28ad0b Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Sun, 21 Dec 2008 09:39:31 +0000 Subject: [PATCH] =?UTF-8?q?Un=20gros=20et=20un=20petit=20probl=C3=A8me=20a?= =?UTF-8?q?vec=20les=20inscriptions:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * on ne testait plus correctement s'il s'agissait d'une inscription de rédacteur ou de visiteur, du coup les visiteurs recevaient {{site}}{{{/ecrire}}} comme URL de login dans le message envoyant les identifiants, et donc un faux message de refus de connexion au login; * la fonction surchargeable {{{test_inscription}}} était de fait ignorée par les tests en amont de CVT; pour assurer un minimum de compatibilité ascendante, on déplace ces tests dans cette fonction, mais celle-ci doit à présent renvoyer le nom de la chaîne de langue (et non plus la chaîne de langue calculée par _T) pour pouvoir identifier le nom du champ fautif. Un peu bancal, mais c'est mieux qu'avant. Evidemment le mieux est de passer aux surcharges de CVT et de ne plus compter sur cette fonction. Avec ça il faut passer à SPIP 2.0.2, c'est vraiment gênant. --- squelettes-dist/formulaires/inscription.php | 67 ++++++++++----------- 1 file changed, 32 insertions(+), 35 deletions(-) diff --git a/squelettes-dist/formulaires/inscription.php b/squelettes-dist/formulaires/inscription.php index 8220e1db74..bdbd879e68 100644 --- a/squelettes-dist/formulaires/inscription.php +++ b/squelettes-dist/formulaires/inscription.php @@ -30,22 +30,13 @@ function formulaires_inscription_verifier_dist($mode, $focus, $id=0) { $erreurs = array(); include_spip('inc/filtres'); - if (!tester_config($id, $mode)) + if (!tester_config($id, $mode) OR (strlen(_request('nobot'))>0)) $erreurs['message_erreur'] = _T('rien_a_faire_ici'); if (!$nom = _request('nom_inscription')) $erreurs['nom_inscription'] = _T("info_obligatoire"); - else { - $nom = trim(corriger_caracteres($nom)); - if((strlen ($nom) < _LOGIN_TROP_COURT) OR (strlen($nom) > 64) OR (strlen(_request('nobot'))>0)) - $erreurs['nom_inscription'] = _T('info_login_trop_court'); - } - if (!$mail = _request('mail_inscription')) $erreurs['mail_inscription'] = _T("info_obligatoire"); - elseif(!email_valide($mail)){ - $erreurs['mail_inscription'] = _T("form_prop_indiquer_email"); - } // compatibilite avec anciennes fonction surchargeables // plus de definition par defaut @@ -55,9 +46,11 @@ function formulaires_inscription_verifier_dist($mode, $focus, $id=0) { else $f = 'test_inscription_dist'; $declaration = $f($mode, $mail, $nom, $id); - if (is_string($declaration)) - $erreurs['mail_inscription'] = $declaration; - else { + 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']))){ @@ -90,7 +83,7 @@ function formulaires_inscription_traiter_dist($mode, $focus, $id=0) { $row = sql_fetsel("statut, id_auteur, login, email", "spip_auteurs", "email=" . sql_quote($mail)); // s'il n'existe pas deja, creer les identifiants $desc = $row ? $row : inscription_nouveau($desc); - } + } else $desc = _T($desc); if (is_array($desc)) { // generer le mot de passe (ou le refaire si compte inutilise) $desc['pass'] = creer_pass_pour_auteur($desc['id_auteur']); @@ -110,24 +103,25 @@ function formulaires_inscription_traiter_dist($mode, $focus, $id=0) { // fonction qu'on peut redefinir pour filtrer les adresses mail et les noms, // et donner des infos supplementaires // Std: controler que le nom (qui sert a calculer le login) est plausible -// et que l'adresse est valide (et on la normalise) -// Retour: une chaine message d'erreur -// ou un tableau avec au minimum email, nom, mode (redac / forum) +// et que l'adresse est valide. On les normalise au passage (trim etc). +// Retour: +// - si ok un tableau avec au minimum email, nom, mode (redac / forum) +// - si ko une chaine de langue servant d'argument a _T expliquant le refus // http://doc.spip.org/@test_inscription_dist function test_inscription_dist($mode, $mail, $nom, $id=0) { include_spip('inc/filtres'); $nom = trim(corriger_caracteres($nom)); - if (!$nom || strlen($nom) > 64) - return _T('ecrire:info_login_trop_court'); - if (!$r = email_valide($mail)) return _T('info_email_invalide'); + if((strlen ($nom) < _LOGIN_TROP_COURT) OR (strlen($nom) > 64)) + return 'ecrire:info_login_trop_court'; + if (!$r = email_valide($mail)) return 'info_email_invalide'; return array('email' => $r, 'nom' => $nom, 'bio' => $mode); } // On enregistre le demandeur comme 'nouveau', en memorisant le statut final // provisoirement dans le champ Bio, afin de ne pas visualiser les inactifs -// A sa premiere connexion il obtiendra son statut final (auth->activer()) +// A sa premiere connexion il obtiendra son statut final. // http://doc.spip.org/@inscription_nouveau function inscription_nouveau($desc) @@ -155,20 +149,23 @@ function envoyer_inscription_dist($desc, $nom, $mode, $id) { $nom_site_spip = nettoyer_titre_email($GLOBALS['meta']["nom_site"]); $adresse_site = $GLOBALS['meta']["adresse_site"]; - - $message = _T('form_forum_message_auto')."\n\n" - . _T('form_forum_bonjour', array('nom'=>$nom))."\n\n" - . _T((($mode == 'forum') ? - 'form_forum_voici1' : - 'form_forum_voici2'), - array('nom_site_spip' => $nom_site_spip, - 'adresse_site' => $adresse_site . '/', - 'adresse_login' => $adresse_site .'/'. _DIR_RESTREINT_ABS)) - . "\n\n- "._T('form_forum_login')." " . $desc['login'] - . "\n- ". _T('form_forum_pass'). " " . $desc['pass'] . "\n\n"; - - return array("[$nom_site_spip] "._T('form_forum_identifiants'), - $message); + if ($mode == '6forum') { + $adresse_login = generer_url_public('login'); + $msg = 'form_forum_voici1'; + } else { + $adresse_login = $adresse_site .'/'. _DIR_RESTREINT_ABS; + $msg = 'form_forum_voici2'; + } + + $msg = _T('form_forum_message_auto')."\n\n" + . _T('form_forum_bonjour', array('nom'=>$nom))."\n\n" + . _T($msg, array('nom_site_spip' => $nom_site_spip, + 'adresse_site' => $adresse_site . '/', + 'adresse_login' => $adresse_login)) . "\n\n- " + . _T('form_forum_login')." " . $desc['login'] . "\n- " + . _T('form_forum_pass'). " " . $desc['pass'] . "\n\n"; + + return array("[$nom_site_spip] "._T('form_forum_identifiants'), $msg); } // http://doc.spip.org/@test_login -- GitLab