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. |
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 été créé avec succès.<br /> <br />'. 'Pour finaliser votre inscription, merci de cliquer sur le lien ci dessous :<br /> <br />'. '<a href="'.$pageURL.'?action=check&key='.$key.'">» Activez votre compte</a> <br /> <br />'. 'Toute l\'équipe vous souhaite la Bienvenue dans la communauté 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é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;"> </td> <td> <input type="submit" value="Cré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 |
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/ |