Jump to content

[MODULE] + [CONTROLEUR] Activation de compte par email (validation d'adresse mail)


Recommended Posts

Edit par Antoine F : suite à une faille de sécurité signalé par un membre de la communauté, j'ai retiré temporairement les liens/pj de ce module (faille dans le méthode notify).

------------------
 
Bonjour à tous,

Je suis nouveau dans le monde de PrestaShop, et j'ai été sidéré de voir qu'il n'y avait pas de validation des comptes par email en natif ! Peut-être sur la version 1.5...?

En attendant j'avais besoin de cette fonctionnalité pour un site en version 1.4.7, et les rares modules gratuits que j'ai pu trouver ne me convenaient pas, surtout parce qu'à chaque fois deux mails étaient envoyés pour chaque inscription (le mail de bienvenue et le mail de validation)

Je me suis donc fabriqué le module (+ controleur) qu'il me fallait, en partant du module emailverify proposé par erico sur ce post :
http://www.prestasho...post__p__472949

Les caractéristiques sont les suivantes :

  • Envoi d'un SEUL mail lors de l'inscription, avec le message de bienvenue ET un lien d'activation du compte (a condition d'utiliser le module + le controleur)
  • Affichage d'un message en fin d'inscription pour prévenir le client que son compte doit encore être activé
  • Affichage d'un message de confirmation après l'activation du compte
  • Connexion automatique du client après l'activation
  • Récupération du panier du client après inscription, activation, et connexion
  • Possibilité d'envoi d'une notification à l'admin (module v1.2, configuration dans le backoffice)
  • Possibilité de se faire renvoyer le lien d'activation (module v1.3)

Pour n'avoir qu'un seul mail j'ai du "neutraliser" le mail de bienvenue de Prestashop, mais grace à l'override (sur les versions 1.4.x) cela se fait sans toucher aux fichiers originaux.

Donc l'archive ci jointe contient à la fois le module emailverify modifié, à copier dans /modules/ et à installer depuis le gestionnaire de module du backoffice (onglet administration), et le fichier AuthController.php à placer dans /override/controllers/

C'est le fichier AuthController.php qui permet de supprimer le mail de bienvenue original. Celui de cette archive provient de la version 1.4.7.3 (identique en version 1.4.8.2)

Ce module devrait surement fonctionner sur toutes les versions 1.4.x, mais pour avoir la bonne version du fichier AuthController.php il faudra le confectionner vous-même à partir de votre fichier d'origine. Un document texte dans l'archive explique comment faire la manip.

Voila, je vous livre donc ce module au cas ou ça intéresserait quelqu'un.

Et merci au programmeur de l'original smile.png

PS : Le module est en français et en anglais et les templates de mails aussi. Si vous utilisez d'autres langues sur votre site il faudra créer les templates de mails correspondants (ils sont dans /modules/emailverify/mails/), sinon vos clients risqueraient de ne pas recevoir leur mail de bienvenue/activation

Le module emailverify v1.1 + le controleur pour PS v1.4.7 / 1.4.8
[Contenu modéré]
MAJ : Module emailverify v1.2 (avec notification admin)
[Contenu modéré]
MAJ : Module emailverify v1.3 (possibilité de renvoi du lien d'activation)
Si le client essaye de se connecter alors que son compte n'a pas été activé, il est redirigé vers le module, et il a la possibilité de se faire renvoyer le lien d'activation
[Contenu modéré]

Version Compatible PS1.5 (Testé sur 1.4.7 à 1.5.3) (remplacer les fichiers et réinitialiser le module)
[Contenu modéré]
Voir ce message : http://www.prestasho...ost__p__1136929

post-344943-0-87284600-1336425432_thumb.png post-344943-0-80745500-1336428874_thumb.png post-344943-0-47475700-1337472315_thumb.png post-344943-0-67569900-1337472065_thumb.png

  • Like 6
Link to comment
Share on other sites

I tried the module and it works perfectly!

(version 1.4.7.3)

 

Would it be possible to add the option to send an e-mail for alert

the administrator of the customer registration?

With this option, for me, would be perfect.

 

regards

Link to comment
Share on other sites

Hi Waltod, thanks for your feedback

 

This is a good suggestion, and I will probably add it.

As I'm still learning Prestashop's structure, I think within a few days there will be a new version.

Link to comment
Share on other sites

Mise à jour :

Ajout du module emailverify en version 1.2 (avec la possibilité d'envoyer une notification a l'admin à chaque nouvelle création de compte)

 

@redtango : En fait le module ne se duplique pas, c'est normal d'avoir deux mails si tu n'a pas mis en place le controleur, car c'est justement lui qui permet de ne plus envoyer le mail de bienvenu original de prestashop...

Link to comment
Share on other sites

Vous allez peut être trouver ça bizarre, mais je ne vois pas trop l'intérêt de demander au client de cliquer sur un lien pour activer son compte....

 

En effet, il y a risque que le lien ne fonctionne pas, le client doit alors entrer lui même le lien dans son navigateur et il y a alors risque que la personne ne sache pas le faire ou le fasse mal et de ce fait il se peut que le client n'active jamais son compte et donc qu'on perde un potentiel acheteur.

 

edit : à part la création de comptes bidons.. même si ça n'empeche pas à 100% : /

Edited by LEDestock (see edit history)
  • Like 1
Link to comment
Share on other sites

@LEDestock

 

Non ce n'est pas bizarre, ton raisonnement est tout à fait juste. Mais je pense que les gens qui commandent sur internet sont maintenant bien habitués à ce genre de procédure. Et puis aujourd'hui il est quand même assez rare de tomber sur un logiciel de messagerie ou un webmail qui n'affiche pas correctement les liens.

 

Moi ça me rassure de savoir que les gérants d'un site ou je m'apprête à passer une commande se soucient de la validité de mon adresse mail. Car en cas de pb, ou tout simplement pour le suivi de la commande, il faut bien pouvoir me contacter. (et je ne compte pas trop sur le téléphone car je vis en Guadeloupe et je commande souvent en métropole...)

 

Ca évite aussi d'avoir des séries de mails en erreur qui peuvent à la longue aboutir au blocage de la messagerie chez certains hébergeurs.

  • Like 1
Link to comment
Share on other sites

MAJ : Module emailverify v1.3 (possibilité de renvoi du lien d'activation)

Si le client essaye de se connecter alors que son compte n'a pas été activé, il est redirigé vers le module, et il a la possibilité de se faire renvoyer le lien d'activation

(Pour la mise à jour, remplacez les fichiers et réinitialisez le module dans le BO)

 

Voila, je pense que le module est complet maintenant...

Link to comment
Share on other sites

Wich archives i have to modify to convert to Spanish? Thanks

 

You need to build the spanish e-mail templates :

  • Unzip the archive wherever you want
  • Go to /emailverify/mails/
  • Make a copy the folder "en" or "fr"
  • Rename this copy to "es"
  • Using a text editor, translate the texts of all files in the "es" folder to Spanish
    (Don't forget to encode all Spanish special characters in the html files, to html entities ! Here is an online tool that may help http://www.htmlescap...scape_tool.html )
  • Then you can upload your "es" folder to your online server in /modules/emailverify/mails/ (or you can make a new archive including the Spanish templates)

You can translate the rest of the module directly online :

  • Go to your back-office > Tools > Translations > Modify translations
  • Chose "Translations of installed modules" and click the Spanish flag (assuming you have spanish language installed…)
  • Then locate "Module: emailverify" to access the texts to translate (32 expressions)
  • When you will save your work, a new file "es.php" will be created in the folder /modules/emailverify/

It would be nice if you could share your translation here, it could be useful for someone else. :)

  • Like 1
Link to comment
Share on other sites

hi, mellow

 

I used your module. everything is fine except that the activation email gets into the trash box all the time. I suppose it is because the mail has attachment, which is my logo.

 

The weirdest thing is that I cannot find any code related to my logo in your module and cannot delete it.

 

Do you have any idea?

Link to comment
Share on other sites

Hi bananashen

 

The only pieces of code related to the logo are in the html email templates :

<a href="{shop_url}" title="{shop_name}"><img alt="{shop_name}" src="{shop_logo}" style="border:none;" ></a>

 

Removing this code would avoid displaying the logo in the message body, but it would still remain attached to the email, because this is a core feature of prestashop.

The shop logo (or a specific email logo if it is defined in BO) is automatically embedded in all html email sent by the system.

 

Some email clients treats this as an attachment as well as an embedded image, but I'm not sure this is the reason why the message goes to trash.

Maybe your spam filter rules are too strict… You should try adding your shop email address to your list of approved senders

 

But if you wont to completely remove the logo in the emails, the simplest way is to set the email format to "text only" in the BO...

Link to comment
Share on other sites

  • 3 weeks later...

Bonjour à tous,

 

le module fonctionne parfaitement sur va V1.4.8.

 

Même souci par contre, le mail de validation fini dans les spams.

Sinon le client ne reçoit pas de mail une fois le compte activé?

 

Sinon excellent travail.

Edited by yZ0 (see edit history)
Link to comment
Share on other sites

Bonjour yZ0,

 

Non, pas de mail pour confirmer l'activation, mais le client a un message sur le site et il est automatiquement connecté. Je pense que ça devrait suffire, non ?

Et puis le but de départ c'était d'avoir confirmation des adresses des clients sans forcément augmenter le nombre de mails envoyé...

 

Justement, pour les mails qui finissent dans les spam, je pense vraiment que c'est au niveau des filtres qui sont parfois un peu trop agressif ou pas très pertinents.

J'ai testé sur des boites hotmail, ainsi que des adresses hébergées chez OVH et relevées avec Outlook 2007 (filtre de courrier indésirable à jour), et je n'ai pas eu de pb particulier. Tout au plus, hotmail demande de confirmer que le message est légitime avant de pouvoir cliquer sur le lien.

 

En tout cas les messages envoyés par le module ont exactement la même structure que les mails natifs de Prestashop. Donc si ils atterrissent dans les spam, les autres messages du système (contact, envoyer à un ami, suivi de commande, etc.) devraient logiquement subir le même sort. à vérifier...

Link to comment
Share on other sites

  • 3 weeks later...

I use Prestashop 1.4.7 and I tried all the possibilities. Override the controller, modify the controller manually, v1.1, v1.2 v.1.3...

 

The mail from Prestashop core is not send (the controller override it correctly) but I get this error:

 

Validation email could not be sent. Maybe you typed a wrong address

 

Thank's in advance.

Link to comment
Share on other sites

@sak2

 

Are you talking about an online installation, or do you test locally ?

Did you properly set your e-mail configuration, and did you test it ?

 

If you are using a local installation, most probably you can't send mails unless you have configured an smtp account in the back office.

 

You should try testing your e-mail configuration : Back office => Preferences => E-mails

Link to comment
Share on other sites

@Mellow No, it's an online store on test enviroment. The mails are sending properly in php mode.

 

Before I installed the module the costumer got the welcome mail from Prestashop. After the module installation no mail is received.

 

The Presta version is 1.7.0.0.

 

Than's for your reply.

Link to comment
Share on other sites

  • 1 month later...
  • 1 month later...
  • 3 weeks later...

Oups, petit problème sur une 1.4.5.1 en Smarty 2 (le template maison est un peu capricieux). Site en test mais en ligne en config de prod. :

Fatal error: Smarty error: [in /htdocs/public/www/modules/emailverify/notify.tpl line 9]: syntax error: unexpected {else} (Smarty_Compiler.class.php, line 478) in /htdocs/public/www/tools/smarty_v2/Smarty.class.php on line 1095

 

Il y a moyen de faire fonctionner quand même ?

- j'envoie l'accès en MP -

Link to comment
Share on other sites

1er Problème résolu :

j'ai repris le code de notify.tpl en réordonnant les conditions de la façon suivante :

 

{if $errors|@count > 0}

{include file="$tpl_dir./errors.tpl"}

{else}

{if $mailresended}

<h2>{l s='Pending registration' mod='emailverify'}</h2>

<br /><br />

<h4>

{l s='Your activation link has been resent to your e-mail address :' mod='emailverify'} <span style="color:#008000">{$mailresended}</span>

</h4>

{else}

<h2>{l s='Pending registration' mod='emailverify'}</h2>

<br />

<h4>

{l s='Your account has been successfuly created but need to be activated.' mod='emailverify'}

<br /><br />

{l s='An activation link has been sent to your e-mail address.' mod='emailverify'}

</h4>

{/if}

{/if}

 

et, en apparence, tout fonctionne normalement.

 

En apparence seulement car les mails ne partent pas mais ça, ça doit provenir de ma config d'envoi mail car le mail de test du back office ne fonctionne pas non plus.

 

Keep on searching...

  • Like 1
Link to comment
Share on other sites

Super, tout fonctionne.

 

la fonction email a été rétablie grace à ce petit tuto :

http://www.presto-changeo.com/en/content/9-fix-email-problems

 

L'idéal serait maintenant qu'aprés l'inscription, les clients puissent revenir directement sur la page produit qu'ils étaient en train de consulter (sur ce site de vente de produits amway , les clients ne peuvent pas voir les prix tant qu'ils ne sont pas inscrits - impératif de la vente directe -)

Link to comment
Share on other sites

  • 4 weeks later...

Je suis en 1.4.6.2.

J'ai des modfis à faire pour pouvoir intégrer le module v1.3 ?

Je ne sais pas si le module fonctionne en v1.4.6.2 (testé sur 1.4.7.3 à 1.4.9.0) Je pense que ça devrait marcher sur toutes les v1.4.x mais il faut tester pour voir.

Après, si le module fonctionne, la modif de AuthController.php c'est juste pour supprimer le mail de bienvenue original de Prestashop (qui fait doublon)

 

 

j'ai voulu modifier le fichier authcontroll comme indiqué mais cela ne marche pas. J'ai mis le module v1.3. J'ai une erreur de code, lorsque je souhaite aller dans la partie mon compte.

Je pense que tu as du faire une erreur dans la modif, il s'agit juste de supprimer les lignes qui servent à envoyer le mail de bienvenu, donc ça ne devrait avoir aucune incidence sur le reste

 

 

Édit :

Voici les lignes à supprimer dans AuthController.php (ou à mettre en commentaire)

		if (!$customer->is_guest)
	{
	 if (!Mail::Send((int)self::$cookie->id_lang, 'account', Mail::l('Welcome!', (int)self::$cookie->id_lang),
	 array('{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{passwd}' => Tools::getValue('passwd')), $customer->email, $customer->firstname.' '.$customer->lastname))
	  $this->errors[] = Tools::displayError('Cannot send email');
	}

Edited by Mellow (see edit history)
Link to comment
Share on other sites

  • 4 weeks later...
  • 1 month later...
  • 1 month later...

Bonjour, je n'arrive pas à installé ce module sur PS 1.5.3. Quelqu'un pourrait m'expliquer où copier les fichiers car j'ai l'impression que c'est pas la même structure que sur les version antérieur de PS. Merci pour vos éclaircissements.

Edited by david86 (see edit history)
Link to comment
Share on other sites

Ce module est pour Prestashop 1.4.x

This module is for Prestashop 1.4.x

Este módulo es para Prestashop 1.4.x

Questo modulo è per Prestashop 1.4.x

 

Si quelqu'un a déjà réalisé cette adaptation, ce serait très sympa de le poster ici (ou ailleurs sur le forum...)

 

Merci d'avance, pour les utilisateurs et futurs utilisateurs de PS1.5 :mellow:

Edited by Mellow (see edit history)
  • Like 1
Link to comment
Share on other sites

Salut, merci d'avoir poster aussi vite une solution. Je me suis empressé de la tester, après son installation j'ai crée un client avec adresse complète (d’ailleurs je le force dans le panneau d'admin par défaut) mais quand je clique sur le bouton confirmer. J'obtiens cette erreur alors que j'ai 0 client d'inscrit : Le mail de validation n'a pas pu être envoyé. Peut-être avez-vous taper une mauvaise adresse...

 

Tu crois que ça peut venir d'ou ? Je dois vider le cache ?

Link to comment
Share on other sites

Si tu teste en local il te faut configurer l'envoi de mail par serveur smtp en back office, car les mails ne peuvent pas être envoyé par la fonction mail() de php en local.

back office => Paramètres avancées => Emails

 

Si tu n'a pas encore l'hébergement avec un serveur smtp tu peux utiliser le serveur smtp de ton fournisseur d’accès internet, mais ce n'est pas toujours simple à configurer...

 

pour orange par exemple :

Serveur SMTP : smtp.orange.fr

Utilisateur : [email protected]

Mot de passe : Mot de passe du compte

Port : 587

 

après il faut tester la configuration en envoyant un mail de test

Link to comment
Share on other sites

Bonjour,

je veux savoir comment faire pour que quant j'active le compte de client, ce dernier reçoit un mail l'informe que sont compte est activé. c'est très urgent Merci

Bonjour,

J'ai du mal à comprendre. Si tu utilise ce module, le client active lui même son compte, et il est renvoyé sur une page indiquant que l'activation est effective. ça ne suffit pas ?

Link to comment
Share on other sites

@kh.abdessamad,

 

Which language do you use on your shop?

If it's a language other than French or English, you must create email templates for your language.

Make a copy of folder /modules/emailverify/mails/en and rename it to your language code.

After you will have to edit the files in that folder...

And translate the module...

 

Sinon, si le message exact est :

Le mail de validation n'a pas pu être envoyé. Peut-être avez-vous taper une mauvaise adresse...

ou

Validation email could not be sent. Maybe you typed a wrong address...

alors tu dois être dans le même cas que david86, il faut vérifier ta configuration d’envoi de mails...

Edited by Mellow (see edit history)
Link to comment
Share on other sites

Bonjour,

Merci pour le module tous marche trés b1, seulement j'ai une petit bug concernant le lien qui s'envoie à l'utilisateur

pour qu'il peut activé sans compte.

 

Voila l'erreur que je recoit, quant je click sur le lien

 

The requested URL /prestashop/index.phpmodules/emailverify/activate.php was not found on this server.

Edited by kh.abdessamad (see edit history)
Link to comment
Share on other sites

Désolé, mais quelle que soit la configuration, je n'arrive pas à reproduire la même chose...

 

Quelle version de prestashop utilise-tu ? Et quelle version du module ?

Si tu utilise PS1.5, as tu téléchargé la bonne version du module ?

Ton serveur est il en ligne ou en local ?

Link to comment
Share on other sites

Hi

 

I have PS 1.4.7 and this module doesn't work perfectly for me. After I click the submit button on the registration page, it shows a blank page with the menu only. The url shown is ~/modules/emailverify/notify.php?id_lang=1&err=2

 

Same error happens after pressing the resend link button. I get the url ~/modules/emailverify/notify.php has a blank page with only the menu.

 

The verification email is sent properly. Once the link is clicked, it goes to the page to give registered successfully message however it breaks the entire css and the page looks terrible. See attachment.

 

Please help me solve this.

 

Thanks

post-133792-0-32827400-1364263615_thumb.png

post-133792-0-56128300-1364264193_thumb.png

Edited by peanut (see edit history)
Link to comment
Share on other sites

After I click the submit button on the registration page, it shows a blank page with the menu only. The url shown is ~/modules/emailverify/notify.php?id_lang=1&err=2

Same error happens after pressing the resend link button. I get the url ~/modules/emailverify/notify.php has a blank page with only the menu.

The verification email is sent properly. Once the link is clicked, it goes to the page to give registered successfully message however it breaks the entire css and the page looks terrible. See attachment.

 

I'm afraid this is a theme compatibility issue. With the default theme (or my modified theme made from the default one) this doesn't occur.

 

You can try the last version that I just added on the first post of this topic, it has some display enhancements. But more probably you will need to correct some CSS in your theme. (maybe add a clear:both; on the container of the module which displays the facebook like box...)

Sometimes, CCC options may also cause these kind of things...

Edited by Mellow (see edit history)
Link to comment
Share on other sites

I'm afraid this is a theme compatibility issue. With the default theme (or my modified theme made from the default one) this doesn't occur.

 

You can try the last version that I just added on the first post of this topic, it has some display enhancements. But more probably you will need to correct some CSS in your theme. (maybe add a clear:both; on some divs)

Sometimes, CCC options may also cause these kind of things...

 

Thanks Mellow, I'll try the version meant for 1.5 and see. I'm not an expert so CSS is not something I know much about. Will try to fix it if possible. But its a great module! Thanks.

Link to comment
Share on other sites

1er Problème résolu :

j'ai repris le code de notify.tpl en réordonnant les conditions de la façon suivante :

 

{if $errors|@count > 0}

{include file="$tpl_dir./errors.tpl"}

{else}

{if $mailresended}

<h2>{l s='Pending registration' mod='emailverify'}</h2>

<br /><br />

<h4>

{l s='Your activation link has been resent to your e-mail address :' mod='emailverify'} <span style="color:#008000">{$mailresended}</span>

</h4>

{else}

<h2>{l s='Pending registration' mod='emailverify'}</h2>

<br />

<h4>

{l s='Your account has been successfuly created but need to be activated.' mod='emailverify'}

<br /><br />

{l s='An activation link has been sent to your e-mail address.' mod='emailverify'}

</h4>

{/if}

{/if}

 

et, en apparence, tout fonctionne normalement.

 

En apparence seulement car les mails ne partent pas mais ça, ça doit provenir de ma config d'envoi mail car le mail de test du back office ne fonctionne pas non plus.

 

Keep on searching...

 

Thank you, this solved half my problem. Now I only need to fix the page they see after they click on the activation link.

Edited by peanut (see edit history)
Link to comment
Share on other sites

Thank you, this solved half my problem. Now I only need to fix the page they see after they click on the activation link.

 

Ok, I see that it may be a smarty problem

So, if now the only thing that doesn't work is the activation link, you can try hardcoding the link in emailverify.php

 

In emailverify.php find the two lines with :

$actlink = $domain.__PS_BASE_URI__.'modules/emailverify/activate.php?id_lang='.$id_lang.'&actkey='.$actkey;

and replace them with :

$actlink = 'http://your-domain/modules/emailverify/activate.php?id_lang='.$id_lang.'&actkey='.$actkey;

 

This should solve this redirect issue

Edited by Mellow (see edit history)
Link to comment
Share on other sites

Ok, I see that it may be a smarty problem So, if now the only thing that doesn't work is the activation link, you can try hardcoding the link in emailverify.php In emailverify.php find the two lines with :
 $actlink = $domain.__PS_BASE_URI__.'modules/emailverify/activate.php?id_lang='.$id_lang.'&actkey='.$actkey; 

and replace them with :

 $actlink = 'http://your-domain/modules/emailverify/activate.php?id_lang='.$id_lang.'&actkey='.$actkey; 

This should solve this redirect issue

 

Hi Mellow, I think you mis understood my problem, the activation link works fine but when they click it, the page it displays breaks the css.

 

Also now the module won't load in the back office and I get the error:

 

 

 

The following module(s) couldn't be loaded:

  • emailverify (parse error in /modules/emailverify/emailverify.php)
  • emailverify (class missing in /modules/emailverify/emailverify.php)

Edited by peanut (see edit history)
Link to comment
Share on other sites

Ok, forget this, I made a mistake <_< If you didn't make any change to emailverify.php, I can't figure why you have this message. try replacing whit the original file...

 

Thanks Mellow, I figured the error.

 

I changed the lines:

 

'.$this->l('If you still doesn\'t receive it, your mail address may be wrong or unreachable.').'<br /><br />
    <form action="notify.php" method="post">
			    <label class="t" for="email">E-mail :</label>
							  <input type="text" name="email" value="'.$email.'" size="30" /><br /><br />
							  <input type="submit" name="submitResend" value="'.$this->l('Resend actvation link').'" class="button_large" />

 

to

 

'.$this->l('If you still don't receive it, your mail address may be wrong or unreachable.').'<br /><br />
    <form action="notify.php" method="post">
			    <label class="t" for="email">E-mail :</label>
							  <input type="text" name="email" value="'.$email.'" size="30" /><br /><br />
							  <input type="submit" name="submitResend" value="'.$this->l('Resend activation link').'" class="button_large" />

 

The issue was replacing doesn\'t to don't which I corrected by using don\'t

Link to comment
Share on other sites

  • 2 weeks later...

For people, who template crash in notify or activate.php, I modified module.

What I've done:

- change some code in activate.php and notify.php by adding

 

if (isset(Context::getContext()->controller))
$controller = Context::getContext()->controller;
else
{
$controller = new FrontController();
$controller->init();
}
Tools::addCSS(_THEME_CSS_DIR_.'global.css', 'all');

after including config.php

- some display changes in tpl files

- few translates of polish language

- I don't remember... :)

The file is here: http://mirrim.eu/pli...PS1.5.x_mod.zip

 

PS. Sorry for logo.gif inside... You can delete this file.

Edited by ciapol (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

Un enorme merci a MELLOW et a CIAPOL pour leur contribution.

 

J'ai installé le module emailverify et charger le fichier AuthController.php, tous fonctionne nickel, a part que j'ai 2 fois l'email d'activation.

y'a t il un moyen de savoir si le nouveau fichier AuthController.php est bien pris en compte ?

Edited by richo (see edit history)
Link to comment
Share on other sites

J'ai installé le module emailverify et charger le fichier AuthController.php, tous fonctionne nickel, a part que j'ai 2 fois l'email d'activation.

y'a t il un moyen de savoir si le nouveau fichier AuthController.php est bien pris en compte ?

 

Bonjour,

Si tu as deux fois le mail d'activation (en fait, mail d'activation + mail de bienvenue de PS) c'est que manifestement l'override de AuthController.php n'est pas pris en compte.

 

Quelle est ta version de Prestashop ?

Et utilise-tu la bonne version de AuthController.php ?

As tu bien copié le fichier au bon endroit ?

- Pour PS1.4 : override/controllers/AuthController.php

- Pour PS1.5 : override/controllers/front/AuthController.php

Link to comment
Share on other sites

Error : Validation email could not be sent. Maybe you typed a wrong address..

 

If it is not a mail configuration problem, it is more likely a problem of language.

 

Which language do you use on your shop?

If it is a language other than French or English, you must create email templates for your language.

Make a copy of folder /modules/emailverify/mails/en and rename it to your language code.

After you will have to edit the files in that folder...

And translate the module...

Link to comment
Share on other sites

  • 4 weeks later...

Bonjours à tous et merci pour cette solution. De mon coté par contre j'obtiens une erreur serveur des que je remplace le fichier authcontroller.php et que je veux accéder à la page d'inscription / connexion.

 

J'ai bien pris la version pour 1.5.4 et supprimé l'index mais rien n'y fait. D'où pourrait venir le problème ?

Link to comment
Share on other sites

pour finir j'ai enlever les 3 parties faisant références à "sendconfirmationmail" et je ne reçoit donc plus que le mail d'activation. Quelles fonctionnalité ai-je pu perdre dans la bataille ?

 

Sinon je cherche à inclure le nom de l'inscrit dans le mail que je reçoit une fois qu'il s'est validé ? Est ce possible ?

Link to comment
Share on other sites

  • 4 weeks later...

Bonjour,

 

Tout d'abord je tiens à remercier Mellow pour ce module très fonctionnel et très bien fait.

 

Il fonctionne très bien de mon côté, mais il me bloque pour une fonctionnalité et je n'arrive pas à en modifier le comportement.

 

Je m'explique : J'ai autorisé sur ma boutique les commandes en tant qu'invité, c'est à dire sans création de compte. Mais le module demande une validation et le client qui ne veut pas créer de compte doit malgré tout valider son mail comme lors de la création d'un vrai compte client.

 

Comment puis-je passer outre ce module dans le cas d'une commande sans création de compte?

Link to comment
Share on other sites

J'ai autorisé sur ma boutique les commandes en tant qu'invité, c'est à dire sans création de compte. Mais le module demande une validation et le client qui ne veut pas créer de compte doit malgré tout valider son mail comme lors de la création d'un vrai compte client. Comment puis-je passer outre ce module dans le cas d'une commande sans création de compte?

 

Bonjour,

 

C'est une excellente question, et pour être honnête je ne me l'étais jamais posé...

En fait dans ma logique, si on s’inquiète de la validité des adresses e-mails des clients, on n'active pas la commande express... :blink:

 

Mais bon, ça peut se régler assez simplement :

dans emailverify.php, fonction hookCreateAccount($params), juste après

			$customer=new Customer($params['newCustomer']->id);
			$customer->getFields();

ajouter

			if ($customer->is_guest) return;

ça devrait stopper l'exécution du module dans le cas d'un compte invité :)

Link to comment
Share on other sites

Bonjour,

 

Merci pour ce travail formidable !!!

 

- avec un compte gmail le mail d'activation arrive de suite.

- avec un compte hotmail le mail d'activation est classé dans les "indésirables". Depuis Thunderbird impossible de le savoir, j'ai du me connecter sur le site hotmail pour le trouver.

 

Ma question est, est-ce lié au module ? Si oui ou non comment faire pour que les messages de la boutique n'arrive pas en indésirable sur la boite mail des clients ?

 

Cela peut malheureusement nous faire perdre une clientèle si elle ne reçoit jamais ses mails et n'a pas le réflexe de regarder les indésirables.

 

Cordialement,

Romain.

Link to comment
Share on other sites

Bonjour,

 

Les mails envoyés par le module ont exactement la même structure que les mails originaux de Prestashop.

Après, la différence ne peux se faire qu'au niveaux des mots employés... Peut être que les filtres de hotmail n'aiment pas des mots comme "activation" ou qu'ils se méfient des mails contenant un lien à cliquer. ( peut-être aussi en fonction du nom du client, si le gars s’appelle viagralovich c'est perdu d'avance ;) )

Mais je crois bien que c'est un peu aléatoire, et que gmail aussi le fait de temps en temps...

Link to comment
Share on other sites

Bonjour et merci pour ce module

Je l ai installer sur un presta 1.4.6 tout marche nickel sauf que quand le client s enregistre sur le site aucun message n' apparaît en précisant qu'un e-mail lui a été envoyé et qu il doit activer son compte j utilise un theme personalise es que cela peut venir de la ?

c est bien domage parceque c est vraiment un super module et du super boulot.

Merci de votre aide

mon site www.mattasoglio.fr si vous voulez tester

Link to comment
Share on other sites

Je l ai installer sur un presta 1.4.6 tout marche nickel sauf que quand le client s enregistre sur le site aucun message n' apparaît en précisant qu'un e-mail lui a été envoyé et qu il doit activer son compte j utilise un theme personalise es que cela peut venir de la ?

 

Bonjour,

 

Je suis allé voir sur ton site, et je pense qu'il pourrait y avoir un problème de redirection.

Quelle version du module utilise-tu ?

Est ce que le message de confirmation après l'activation du compte s'affiche correctement ?

 

La console de firebug renvoie également plusieurs erreurs, voir s'il n'y aurait pas un conflit avec un autre module...

 

Par contre je n'ai pas créé de compte pour constater, parce que quelque chose m'a stoppé net !

A l'enregistrement, l'inscription à la newsletter est obligatoire ??? Sorry mais par principe je décline :(

(Je ne sais pas si c'est volontaire, mais à mon avis c'est plutôt contre productif...)

Link to comment
Share on other sites

Merci d’être allez voir j ai réglé le problème en modifiant un fichier concernant l inscription a la news elle n est pas obligatoire il suffit de se décocher pour ne pas être inscrit elle facilite juste le prospect beaucoup de boites le font et même des grandes comme la redoute par ex

Link to comment
Share on other sites

Ok pas de souci, je me disais aussi que c'était peut-être involontaire...

 

Bon, je suis retourné sur le site et j'ai créé un compte.

Je ne sais pas si tu as changé quelque chose entre temps, mais pour moi ça s'est bien passé

- J'ai eu le message "inscription en attente, un mail a été envoyé à votre adresse....."

- J'ai reçu le message, et j'ai essayé de me connecté avant d'avoir activé le compte

- J'ai été redirigé vers le module pour me faire renvoyé le lien. Ce que j'ai fais, et j'ai reçu le deuxième mail

- J'ai activé le compte, et j'ai eu le message "votre compte a bien été activé"

 

Bref, tout a fonctionné!

Et la mise forme des messages semble conforme au css de ton thème

 

Par contre je trouve que le site est assez lent, tu devrais vérifier les réglages des paramètres de performance

 

Bonne continuation

 

PS: J'ai testé avec FireFox, mais je ne pense pas que ça fasse une différence...

Link to comment
Share on other sites

Re-bonjour Mellow et encore bravo pour ce module et ta disponibilité pour aider et le faire évoluer.

 

Je reviens à la charge avec ma question sur la possibilité de revenir aux produits précédemment consultés (sur le site de produits amway : http://www.shazam-way-of-life.com que je gère, la validation d'inscription intervient tôt dans le processus d'achat, a priori avant que le caddie n'ait été rempli) et l'affichage par exemple du module "bloc produits déjà vus" en évidence sur la page de confirmation serait un vrai plus.

 

Si quelqu'un a la solution... sinon, je vais repartir à la brasse dans le code pour essayer de lui créer un point d'acroche ad'hoc ; ) .

Link to comment
Share on other sites

Bon, j'ai trouvé un tuto qui explique comment créer des hooks supplémentaires pour un module, ce qui, en théorie, devrait permettre d'afficher a peu prés ce qu'on veut ou l'on veut... et notamment sur la page de confirmation ou celle du compte client.

 

Sauf qu'avec le module blockviewed, ça ne s'affiche pas. Mais c'est un autre sujet...

Pour info, les tutos en question : http://fr.ladybeug.wikia.com/wiki/Modifier_le_hook_d%E2%80%99un_module_sous_Prestashop et http://blog.lahaut.info/2011/05/rajouter-un-nouveau-hook-dans-prestashop-1-4-grace-a-loverride/

Link to comment
Share on other sites

  • 4 weeks later...

I installed the module and it works perfectly but in the end I get two emails registration:

 

1) With the login details (email prestashop default);

2) with the login details and a link for account activation.

 

How can I lock the first message?

sorry for my bad English

 

--------------------------------------------------------------------------------------------------------------------------------------------------

 

French Version xD

 

 

J'ai installé le module et il fonctionne parfaitement, mais à la fin je reçois enregistrement deux emails:

 

1) Avec les informations de connexion (email défaut de prestashop);

2) avec les informations de connexion et un lien pour l'activation du compte.

 

Comment puis-je verrouiller le premier message?

Désolé pour mon mauvais français

Link to comment
Share on other sites

Bonjour à tous,

 

Je suis nouveau dans le monde de PrestaShop, et j'ai été sidéré de voir qu'il n'y avait pas de validation des comptes par email en natif ! Peut-être sur la version 1.5...?

 

En attendant j'avais besoin de cette fonctionnalité pour un site en version 1.4.7, et les rares modules gratuits que j'ai pu trouver ne me convenaient pas, surtout parce qu'à chaque fois deux mails étaient envoyés pour chaque inscription (le mail de bienvenue et le mail de validation)

 

Je me suis donc fabriqué le module (+ controleur) qu'il me fallait, en partant du module emailverify proposé par erico sur ce post :

http://www.prestasho...post__p__472949

 

Les caractéristiques sont les suivantes :

  • Envoi d'un SEUL mail lors de l'inscription, avec le message de bienvenue ET un lien d'activation du compte (a condition d'utiliser le module + le controleur)
  • Affichage d'un message en fin d'inscription pour prévenir le client que son compte doit encore être activé
  • Affichage d'un message de confirmation après l'activation du compte
  • Connexion automatique du client après l'activation
  • Récupération du panier du client après inscription, activation, et connexion
  • Possibilité d'envoi d'une notification à l'admin (module v1.2, configuration dans le backoffice)
  • Possibilité de se faire renvoyer le lien d'activation (module v1.3)

Pour n'avoir qu'un seul mail j'ai du "neutraliser" le mail de bienvenue de Prestashop, mais grace à l'override (sur les versions 1.4.x) cela se fait sans toucher aux fichiers originaux.

 

Donc l'archive ci jointe contient à la fois le module emailverify modifié, à copier dans /modules/ et à installer depuis le gestionnaire de module du backoffice (onglet administration), et le fichier AuthController.php à placer dans /override/controllers/

 

C'est le fichier AuthController.php qui permet de supprimer le mail de bienvenue original. Celui de cette archive provient de la version 1.4.7.3 (identique en version 1.4.8.2)

 

Ce module devrait surement fonctionner sur toutes les versions 1.4.x, mais pour avoir la bonne version du fichier AuthController.php il faudra le confectionner vous-même à partir de votre fichier d'origine. Un document texte dans l'archive explique comment faire la manip.

 

Voila, je vous livre donc ce module au cas ou ça intéresserait quelqu'un.

 

Et merci au programmeur de l'original :)

 

PS : Le module est en français et en anglais et les templates de mails aussi. Si vous utilisez d'autres langues sur votre site il faudra créer les templates de mails correspondants (ils sont dans /modules/emailverify/mails/), sinon vos clients risqueraient de ne pas recevoir leur mail de bienvenue/activation

 

Le module emailverify v1.1 + le controleur pour PS v1.4.7 / 1.4.8

 

MAJ : Module emailverify v1.2 (avec notification admin)

 

MAJ : Module emailverify v1.3 (possibilité de renvoi du lien d'activation)

Si le client essaye de se connecter alors que son compte n'a pas été activé, il est redirigé vers le module, et il a la possibilité de se faire renvoyer le lien d'activation

 

 

Version Compatible PS1.5 (Testé sur 1.4.7 à 1.5.3) (remplacer les fichiers et réinitialiser le module)

 

Voir ce message : http://www.prestasho...ost__p__1136929

 

post-344943-0-87284600-1336425432_thumb.png post-344943-0-80745500-1336428874_thumb.png post-344943-0-47475700-1337472315_thumb.png post-344943-0-67569900-1337472065_thumb.png

 

Bonjour Mellow,

 

Je trouve cela intéressant, mais je suis un peu perdu dans tous ces fichiers, je suis prestashop 1.4.4.0

 

Que me conseillerais-tu ? Car de temps à autre, je me retrouve avec des créations d'adresses mail : fantaisie.

 

Cordialement.

Link to comment
Share on other sites

Hi nakiodev,

 

Did you download the PS1.5.4 version with the AuthController override ? http://www.prestasho...ost__p__1136929

And did you copy AuthController.php to /override/controllers/front/ ?

And especially did you delete the file /cache/class_index.php ? (this is necessary to activate the override, it will be regenerated)

 

Yes i do, all 3 steps, but after the registration of the customer I see the template a mess, see attached screenshoot.

Instead using the version "EmailVerify" just and creating language files this does not happen.

post-628623-0-83111300-1375703897_thumb.jpg

Link to comment
Share on other sites

Yes i do, all 3 steps, but after the registration of the customer I see the template a mess, see attached screenshoot.

Instead using the version "EmailVerify" just and creating language files this does not happen.

 

Ok, I don't know why this happens, maybe an override issue...

But if the module works fine, you can disable the default PS welcome mail by editing your AuthController

In /controllers/front/AuthController.php

find

                  	 if (!$customer->is_guest)
                           if (!$this->sendConfirmationMail($customer))
                               $this->errors[] = Tools::displayError('The email cannot be sent.');

replace with

                  	 /* Default welcome mail removed
                       if (!$customer->is_guest)
                           if (!$this->sendConfirmationMail($customer))
                               $this->errors[] = Tools::displayError('The email cannot be sent.');
                       */

 

Remember that in case of update this file could be overwritten, and you would have to redo the change

 

By the way, thanks for the italian translation :)

Link to comment
Share on other sites

Avec PS1.4.4.0 tu devrait pouvoir utiliser la version 1.4

 

 

Et comme pour l'ami italien, il faudra désactiver le mail de bienvenue original de prestashop pour éviter de l'avoir en double.

Sauf que pour PS 1.4.4 le code sera un peu différent :

Dans /controllers/AuthController.php

trouver

                          	 if (!$customer->is_guest)
                               {
                                   if (!Mail::Send((int)(self::$cookie->id_lang), 'account', Mail::l('Welcome!'),
                                   array('{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{passwd}' => Tools::getValue('passwd')), $customer->email, $customer->firstname.' '.$customer->lastname))
                                       $this->errors[] = Tools::displayError('Cannot send email');
                               }

et remplacer par

                          	 if (!$customer->is_guest)
                               {
                                   /*
                                   if (!Mail::Send((int)(self::$cookie->id_lang), 'account', Mail::l('Welcome!'),
                                   array('{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{passwd}' => Tools::getValue('passwd')), $customer->email, $customer->firstname.' '.$customer->lastname))
                                       $this->errors[] = Tools::displayError('Cannot send email');
                                   */
                               }

  • Like 1
Link to comment
Share on other sites

+1 ^_^

 

merci pour ta réponse, je regarderai ça demain à tête reposée.

 

y en a qui sont sympa : remplir toutes les infos pour créer un compte client ça leur prend la tête, alors ils mettent n'importe quoi : [email protected] ou [email protected] - je fais comment moi après ? :huh:

 

sinon au passage, j'ai activé les paiements par CB, depuis la dernière fois .... :D

 

bonne soirée

Edited by shooping (see edit history)
Link to comment
Share on other sites

Ok, I don't know why this happens, maybe an override issue...

But if the module works fine, you can disable the default PS welcome mail by editing your AuthController

In /controllers/front/AuthController.php

find

			   	 if (!$customer->is_guest)
						if (!$this->sendConfirmationMail($customer))
							$this->errors[] = Tools::displayError('The email cannot be sent.');

replace with

			   	 /* Default welcome mail removed
					if (!$customer->is_guest)
						if (!$this->sendConfirmationMail($customer))
							$this->errors[] = Tools::displayError('The email cannot be sent.');
					*/

 

 

I did what you suggested but nothing! will not believe it but still come two e-mails! I do not know what to do :wacko:

 

Remember that in case of update this file could be overwritten, and you would have to redo the change

 

By the way, thanks for the italian translation :)

 

I like to help out, although I'm not an expert :)

 

P.S. sorry for my very bad english -_-

Link to comment
Share on other sites

I did what you suggested but nothing! will not believe it but still come two e-mails! I do not know what to do :wacko:

 

OK, I forgot there was two registration mode in PS1.5 :(

So there should be a second piece of code to modify, but in fact there is a better way to achieve that :

 

In AuthController.php just undo previous change

and find

   protected function sendConfirmationMail(Customer $customer)
   {
  	 return Mail::Send(

replace with

   protected function sendConfirmationMail(Customer $customer)
   {
       // Don't send mail, just return true !
       return true;

       return Mail::Send(

 

Sorry for the mistake :huh:

Edited by Mellow (see edit history)
Link to comment
Share on other sites

Bonjour Mellow,

 

L'un de mes amis utilise ton module sur son site en version PS 1.5.4, et il fonctionne parfaitement. Cependant, j'ai moi même développé un module pour son site et mon module ne marche plus lorsqu'on active emailverify.

 

Je pense savoir d'où viens le souci et je me permet de te demander ton avis pour envisager une solution.

 

Pour t'expliquer plus en détails, mon module utilise le hook actionCustomerAccountAdd, qui je pense est l'équivalent du hook createAccount en prestashop 1.4.

Or, dans ton module, la fonction hookCreateAccount déloggue l'utilisateur avant de le rediriger. C'est bien le comportement attendu j'imagine, mais du coup mon hook n'est pas appelé.

 

J'ai donc voulu modifier mon module afin d'utiliser non plus le hook actionCustomerAccountAdd, mais le hook actionAuthentication, afin d'effectuer mon traitement lors du premier login de l'utilisateur. Ce premier login survient normalement lorsque le client active son adresse mail grâce à ton module.

 

Malheureusement mon hook n'est pas appelé lorsque le client vérifie son adresse email (alors qu'il est bel et bien loggé). De plus, si je me déloggue et que je me reloggue ensuite, alors mon hook est bien appelé comme souhaité.

 

Dans le fichier emailverify.php, tu lances l'execution de l'authentification de l'utilisateur grâce à cette ligne :

 

 

Module::hookExec('authentication');

 

Ce qui doit normalement déclencher le hook authentication. Malheureusement cela ne semble pas appeler mon hook. Selon toi, comment procéder pour que mon code soit bien appelé par la ligne ci-dessus ?

Mon module étant sur un presta 1.5, j'ai utilisé les hook 1.5. Donc ma fonction s'appelle hookActionAuthentication, et non pas hookAuthentication, est-ce que cela peut poser problème à ton avis ? Et si oui, est-ce que je peut remplacer la ligne ci-dessus par :

 

Module::hookExec('actionAuthentication');

 

??

 

Merci par avance pour tes informations.

Link to comment
Share on other sites

@rvalery

 

Bonjour,

 

Je vois très bien ton souci, j'ai déjà été confronté à ça avec un autre module qui utilise le même hook, et il y a peut-être une solution toute simple mais ça va dépendre de la nature de l'action qu'exécute ton module.

 

D'abord pour le nommage des hook, le createAccount de PS1.4 est devenu actionCustomerAccountAdd en 1.5 mais c'est exactement le même hook. Pour assurer la compatibilité avec les modules créés en 1.4 ils ont introduit un système d'alias (stocké dans la table ps_hook_alias)

Donc lorqu'on greffe un module sur createAccount, en 1.5 c'est sur actionCustomerAccountAdd qu'il est greffé !

 

C'est pareil pour authentication et actionAuthentication, Mais peut-être que les alias ne sont pas pris en compte lorsqu’on appelle le hook par la commande hookExec() ??? Donc tu devrais effectivement essayer en utilisant la syntaxe 1.5 dans emailverify.php ( Module::hookExec('actionAuthentication'); )

 

Sinon, si l'action effectuée par ton module est compatible avec le fait que le nouveau compte ne soit pas confirmé, la solution simple c'est de changer la position de ton module dans le hook actionAuthentication pour le placer avant emailverify (back office => modules => position => Afficher les points d'accroche invisibles -> actionAuthentication)

De cette façon, à la création du compte ton module serait exécuté avant que le mien ne désactive le compte pour attendre la vérification ;) Mais il ne faudrait pas que ton module arrête le processus (comme le fait emailverify)

 

Tiens nous au courant si l'une ou l'autre solution fait ton affaire.

 

PS : Ne fait pas attention au gros point d'intérogation à coté du module dans le hook actionAuthentication, c'est parce que j'ai oublié d'inclure un fichier logo.png :(

Link to comment
Share on other sites

OK, I forgot there was two registration mode in PS1.5 :(

So there should be a second piece of code to modify, but in fact there is a better way to achieve that :

 

In AuthController.php just undo previous change

and find

protected function sendConfirmationMail(Customer $customer)
{
  	 return Mail::Send(

replace with

protected function sendConfirmationMail(Customer $customer)
{
	// Don't send mail, just return true !
	return true;

	return Mail::Send(

 

Sorry for the mistake :huh:

 

It works! At registration I only received the email with the confirmation link! thank you very much! :D :D :D

 

Can I ask for your help once again? if I would have 2 important things to ask yourself:

 

1) Could you look at this topic and see if you have a suggestion? no one has answered yet ...http://www.prestasho...86#entry1326686

 

2) How to attach a. Pdf file containing the terms of use in the mail? (in login detail email after customer register)

 

thanks again

Link to comment
Share on other sites

1) Could you look at this topic and see if you have a suggestion? no one has answered yet ...http://www.prestasho...86#entry1326686

I answered to this topic

 

2) How to attach a. Pdf file containing the terms of use in the mail? (in login detail email after customer register)

 

Here is a simple file attachment code :

First upload your file to the root dir of your shop (ex: www.your-shop.com/terms_of_use.pdf)

then in emailverify.php replace

          	 if (!Mail::Send((int)$cookie->id_lang,
                   'emailverify',
                   Mail::l('Welcome!', (int)$cookie->id_lang),
                   array('{firstname}' => $customer->firstname,
                   '{lastname}' => $customer->lastname,
                   '{email}' => $customer->email,
                   '{passwd}' =>  Tools::getValue('passwd'),
                   '{actlink}' => $actlink),
                   $customer->email, $customer->firstname.' '.$customer->lastname, NULL, NULL, NULL, NULL, dirname(__FILE__).'/mails/')
                   )

with

          	 $file = _PS_ROOT_DIR_ . '/terms_of_use.pdf'; // File name with no spaces no accents !!!
               $fileAttachment['content'] = file_get_contents($file);
               $fileAttachment['name'] = 'Terms Of Use.pdf'; // Name of attachement (no accents !!!)
               $fileAttachment['mime'] = 'application/pdf'; // Mime type of attachement
               if (!Mail::Send((int)$cookie->id_lang,
                   'emailverify',
                   Mail::l('Welcome!', (int)$cookie->id_lang),
                   array('{firstname}' => $customer->firstname,
                   '{lastname}' => $customer->lastname,
                   '{email}' => $customer->email,
                   '{passwd}' =>  Tools::getValue('passwd'),
                   '{actlink}' => $actlink),
                   $customer->email, $customer->firstname.' '.$customer->lastname, NULL, NULL, $fileAttachment, NULL, dirname(__FILE__).'/mails/')
                   )

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...