CMS Automne
http://www.automne-cms.org/forum/

[résolu] Soucis validation d'un compte apres inscription
http://www.automne-cms.org/forum/viewtopic.php?f=2&t=2664
Page 1 sur 1

Auteur:  wind [ Jeu Jan 17, 2013 12:51 pm ]
Sujet du message:  [résolu] Soucis validation d'un compte apres inscription

Salut a tous, j'ai installer un formulaire d'inscription, a première vu il fonctionne bien car les utilisateurs arrive bien dans le module mais impossible de valider l'inscription, le lien d'activation est toujours invalide...
Alors: bug ou erreur de ma part, avez vous une idée ?

Auteur:  atm4u [ Jeu Jan 17, 2013 1:14 pm ]
Sujet du message:  Re: Soucis validation d'un compte apres inscription

Salut Wind,
Je comprends pas, quel module ? inscription a quoi ? Un formulaire automne ?
Je crois que l'on va avoir besoin de plus d'info. :P

Auteur:  wind [ Jeu Jan 17, 2013 1:31 pm ]
Sujet du message:  Re: Soucis validation d'un compte apres inscription

je parle du module membre, j'ai repris ce formulaire pour les inscriptions:
Code :
<row>
   <div class="aside">
      <?php
$action = io::request('action', array('create', 'check'));
$message = $error = $lastname = $firstname = $email = $login = $pass1 = $pass2 = $spam = '';
if ($action == 'create') {
   $spam = io::request('name');
   $login = io::request('login');
   $pass1 = io::request('pass1', 'sensitiveIO::isValidPassword');
   $pass2 = io::request('pass2', 'sensitiveIO::isValidPassword');
   $lastname = io::request('lastname');
   $firstname= io::request('firstname');
   $email = io::request('email', 'io::isValidEmail');
   if ($spam) {
      $error .= 'Erreur : Le champ name ne doit pas être rempli (antispam) ...<br />';
   }
   if (!$login) {
      $error .= 'Erreur : L\'identifiant est obligatoire ...<br />';
   } elseif (CMS_profile_usersCatalog::loginExists($login, $cms_user)) {
      $error .= 'Erreur : Cet identifiant existe déjà ... Veuillez en choisir un autre.<br />';
   }
   if (!$pass1 || !$pass2) {
      $error .= 'Erreur : Les champs "Mot de passe" sont manquant ou incorrects ...<br />';
   } elseif ($pass1 != $pass2) {
      $error .= 'Erreur : Les champs "Mot de passe" sont différents ...<br />';
   }
   if (!$lastname) {
      $error .= 'Erreur : Le nom est obligatoire ...<br />';
   }
   if (!$email) {
      $error .= 'Erreur : L\'email est manquant ou invalide ...<br />';
   }
   if (!$error) {
      $user = new CMS_profile_user();
      $user->setLogin($login);
      $user->setPassword($pass1);
      $user->setLastName($lastname);
      $user->setFirstName($firstname);
      $user->setLanguage(new CMS_language('fr'));
      $contactData = new CMS_contactData();
      $contactData->setEmail($email);
      $user->setContactData($contactData);
      if ($user->writeToPersistence()) {
         // groupe des utilisateurs authentifiés
         $groupObject = CMS_profile_usersGroupsCatalog::getByID(AUTHENTICATED_USERS_GROUP_ID);
         $groupObject->addToUserAndWriteToPersistence($user);
         // groupe de tous les utilisateurs
         $groupObject = CMS_profile_usersGroupsCatalog::getByID(ALL_USERS_GROUP_ID);
         $groupObject->addToUserAndWriteToPersistence($user);
         //inactive user
         $user->setActive(false);
         $user->writeToPersistence();
         //Création de la clé d'identification
         $key = base64_encode(io::generateKey(20).'_'.$user->getUserId() ^ ENCODING_KEY);
         //Création de l'email de confirmation
         $template = (is_file(PATH_MAIL_TEMPLATES_FS)) ? PATH_MAIL_TEMPLATES_FS : '';
         $mail = new CMS_email();
         $mail->setEmailFrom(APPLICATION_POSTMASTER_EMAIL);
         $mail->setFromName(APPLICATION_LABEL);
         $mail->setSubject('Validation de votre compte utilisateur', true);
         $mail->setEmailTo($email);
         $pageURL = CMS_tree::getPageValue('{{pageID}}', 'url');
         $body =
            'Votre compte utilisateur sur le site <a href="http://www.genea-logique.fr">www.genea-logique.fr</a> a &eacute;t&eacute; cr&eacute;&eacute; avec succ&egrave;s.<br />
<br />'.
            'Pour finaliser votre inscription, merci de cliquer sur le lien ci dessous :<br />
<br />'.
            '<a href="'.$pageURL.'?action=check&key='.$key.'">&raquo; Activez votre compte</a>
<br />
<br />'.
            'Toute l\'&eacute;quipe vous souhaite la Bienvenue dans la communaut&eacute; Automne !<br />
<br />';
         $mail->setEmailHTML($body);
         $mail->setFooter('Cet email est généré automatiquement par Généa-logique concernant le site http://www.genea-logique.fr.'."\n".'Ne répondez pas directement à ce message.');
         $mail->setTemplate($template);
         $mail->sendEmail();
         $message = 'Votre compte a été créé. Un email vous a été envoyé pour valider votre inscription.';
      } else {
         $error .= 'Erreur lors de la création du compte, veuillez rééssayer ...<br />';
      }
   }
} elseif ($action == 'check') {
   $key = io::request('key');
   //Lecture de l'ID utilisateur à partir de la clé
   $key = base64_decode($key) ^ ENCODING_KEY;
   if( strpos($key,"_") !== false ) {
      @list( $generatedKey, $userId ) = explode( "_", $key );
   }
   if (io::isPositiveInteger($userId)) {
      $user = CMS_profile_usersCatalog::getByID($userId);
      if (!is_object($user) || $user->hasError() || $user->isActive()) {
         $error .= 'Erreur : Ce lien d\'activation est invalide ...<br />';
      } else {
         //Active user
         $user->setActive(true);
         $user->writeToPersistence();
         $message = 'Votre compte a été activé. Vous pouvez maintenant vous identifier à l\'aide du formulaire ci-dessus.';
      }
   } else {
      $error .= 'Erreur : Ce lien d\'activation est invalide ...<br />';
   }
}
//Create user form
$content = '';
if ($message) {
   $content .= '<h4>Créer votre compte :</h4>
<div class="cms_forms_msg">'.$message.'</div>';
} elseif ($action != 'check' && $cms_user->getUserId() == ANONYMOUS_PROFILEUSER_ID) {
   $content .= '<h4>Créer votre compte :</h4>
<p>Vous ne possédez pas encore de compte sur Genea-logique.fr ? Créez en un facilement à l\'aide du formulaire suivant.</p>';
   if ($error) {
      $content .= '<div class="cms_forms_error_msg">'.$error.'</div>';
   }
   $content .= '
<div class="cms_forms">
<a name="formAnchorCreate"></a>

<form action="/web/genea/12-inscription.php#formAnchorCreate" method="post" id="cms_forms_create">
<input type="hidden" name="action" value="create" />
<table width="100%" cellspacing="1" cellpadding="1" border="0" align="center">
<tbody>
<tr>
<td style="text-align:right; width:30%;">
<label for="lastname">* Nom</label>
</td>
<td>
<input type="text"   name="lastname" value="'.io::htmlspecialchars($lastname).'" />
</td>
</tr>
<tr>
<td   style="text-align:   right;">
<label for="firstname">Pr&eacute;nom</label>
</td>
<td>
<input   type="text"   name="firstname" value="'.io::htmlspecialchars($firstname).'" />
</td>
</tr>
<tr>
<td   style="text-align:   right;">
<label for="email">* Email</label>
</td>
<td>
<input   type="text"   name="email" value="'.io::htmlspecialchars($email).'" />
</td>
</tr>
<tr>
<td   style="text-align:   right;">
<label for="login">* Pseudo</label>
</td>
<td>
<input   type="text"   name="login" value="'.io::htmlspecialchars($login).'" />
</td>
</tr>
<tr>
<td   style="text-align:   right;">
<label for="pass1">* Mot de passe</label>
</td>
<td>
<input   type="password"   name="pass1" value="'.io::htmlspecialchars($pass1).'" />
</td>
</tr>
<tr>
<td   style="text-align:   right;">
<label for="pass2">* Confirme passe</label>
</td>
<td>
<input   type="password"   name="pass2" value="'.io::htmlspecialchars($pass2).'" />
</td>
</tr>
<tr>
<td style="text-align: right;">&nbsp;</td>
<td>
<input type="submit" value="Cr&eacute;er votre compte" name="submit" class="button" />
</td>
</tr>
</tbody>
</table>
<span style="display:none;">
<input   type="text"   name="name"   value="'.io::htmlspecialchars($spam).'" />
</span>
</form>
</div>
<p>
Conformément à la loi informatique et liberté du 06.01.78 (article 34), vous disposez d\'un droit d\'accès, de modification, de rectification et de suppression des données vous concernant.
</p>';
} elseif ($action == 'check' && $error) {
   $content .= '<h4>Créer votre compte :</h4>';
   if ($error) {
      $content .= '<div class="cms_forms_error_msg">'.$error.'</div>';
   }
}
echo $content;
   ?>
</div>
</row>

quand je m'inscrit, je reçoit bien le mail de validation mais des le 1er clic, le lien est considéré comme invalide...
tu peux faire le test si tu veux: http://www.genea-logique.fr/web/genea/1 ... iption.php je supprimerais ensuite ton compte...

et j'ai ajouté ça dans le config:*
//key used to check user email (in profile creation)
define("ENCODING_KEY",'aze');
//Identifiant du groupe redacteurs
define('AUTHENTICATED_USERS_GROUP_ID', 1);
//Identifiant du groupe "Tout le monde"
define('ALL_USERS_GROUP_ID', 1);

Auteur:  wind [ Jeu Jan 17, 2013 5:50 pm ]
Sujet du message:  Re: Soucis validation d'un compte apres inscription

a pres de nombreux tests, rien a faire, le lien de validation ne fonctionne jamais...
j'ai vu que sur le site d'automne la validation se fesait sur la page login, que contient cette page au sujet de la validation ?

Auteur:  jpg [ Ven Jan 18, 2013 9:49 am ]
Sujet du message:  Re: Soucis validation d'un compte apres inscription

Salut wind,

Le principe est d'envoyer par mail un lien de validation qui contient l'id de l'utilisateur encodé.
Le lien renvoi vers ta page de connexion on décode et on valide le compte utilisateur correspondant a l'id trouve

Sauf que le système employé pour coder / décoder marche pas.

Tu vas remplacer la ligne :
Code :
$key = base64_encode(io::generateKey(20).'_'.$user->getUserId() ^ ENCODING_KEY);

par
Code :
$key = trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, ENCODING_KEY,io::generateKey(20).'_'.$user->getUserId(), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))));


et la ligne
Code :
$key = base64_decode($key) ^ ENCODING_KEY;

par
Code :
$key = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, ENCODING_KEY, base64_decode($key), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)));

Auteur:  wind [ Ven Jan 18, 2013 12:03 pm ]
Sujet du message:  Re: Soucis validation d'un compte apres inscription

Un grand merci jpg, tous fonctionne correctement :D

Auteur:  wind [ Ven Jan 18, 2013 12:03 pm ]
Sujet du message:  Re: Soucis validation d'un compte apres inscription

Pour le coup, est-ce un nouveau bug a signaler ???

Page 1 sur 1 Le fuseau horaire est UTC [Heure d’été]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/