Skip to content
Extraits de code Groupes Projets
Valider 916a1c22 rédigé par esj's avatar esj
Parcourir les fichiers

Un gros et un petit problème avec les inscriptions:

	* 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.
parent f2acce77
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -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
......
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