CMS Automne

Forum de la communauté du CMS Automne
Nous sommes actuellement le Sam Nov 23, 2024 5:51 pm

Le fuseau horaire est UTC [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 7 messages ] 
Auteur Message
MessagePublié: Jeu Jan 17, 2013 12:51 pm 
Hors-ligne

Inscrit(e) le : Ven Nov 19, 2010 11:05 am
Message(s) : 223
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 ?


Dernière édition par wind le Ven Jan 18, 2013 12:09 pm, édité 1 fois.

Haut
 Profil  
 
MessagePublié: Jeu Jan 17, 2013 1:14 pm 
Hors-ligne
Avatar de l’utilisateur

Inscrit(e) le : Sam Fév 12, 2011 5:26 pm
Message(s) : 188
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


Haut
 Profil  
 
MessagePublié: Jeu Jan 17, 2013 1:31 pm 
Hors-ligne

Inscrit(e) le : Ven Nov 19, 2010 11:05 am
Message(s) : 223
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);


Haut
 Profil  
 
MessagePublié: Jeu Jan 17, 2013 5:50 pm 
Hors-ligne

Inscrit(e) le : Ven Nov 19, 2010 11:05 am
Message(s) : 223
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 ?


Haut
 Profil  
 
MessagePublié: Ven Jan 18, 2013 9:49 am 
Hors-ligne

Inscrit(e) le : Lun Nov 19, 2012 5:00 pm
Message(s) : 18
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)));


Haut
 Profil  
 
MessagePublié: Ven Jan 18, 2013 12:03 pm 
Hors-ligne

Inscrit(e) le : Ven Nov 19, 2010 11:05 am
Message(s) : 223
Un grand merci jpg, tous fonctionne correctement :D


Haut
 Profil  
 
MessagePublié: Ven Jan 18, 2013 12:03 pm 
Hors-ligne

Inscrit(e) le : Ven Nov 19, 2010 11:05 am
Message(s) : 223
Pour le coup, est-ce un nouveau bug a signaler ???


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 7 messages ] 

Le fuseau horaire est UTC [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 80 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Recherche de:
Aller vers :  
cron
Powered by phpBB® Forum Software © phpBB Group
Traduit par Maël Soucaze et Elglobo © phpBB.fr