Jump to content
webshop

Probleme mail de recuperation de mot de passe client

Recommended Posts

Bonjour,

 

Lorsqu'un client oublie son mot de passe et demande un nouveau ... il recoit un premier mail qui va permettre de générer le mot de passe. Je souhaiterais pouvoir modifier ce mail car il ne fonctionne pas actuellement.

 

Le lien ne marche pas

 

Quel fichier je dois modifier?

 

Merci

Share this post


Link to post
Share on other sites

'{url}' => self::$link->getPageLink('password.php', true).'?token='.$customer->secure_key.'&id_customer='.(int)$customer->id),

 

http://www.monsite.fr/fr/?token=5e61e516fc65****&id_customer=8 >> il manque la page là ! donc oui la il pointe sur l'index.

 

Dans la partie métas en BO il faudrait vérifier les informations pour la page password.php

 

Mettez à jour en 1.4.11 svp avec le moduel autoupgrade ou essayez de mettre à jour ce fichier

 

https://github.com/PrestaShop/PrestaShop-1.4/blob/development/controllers/PasswordController.php#L57

 

Cordialement

Share this post


Link to post
Share on other sites

Bien vu Mister Roussac, merci !

 

J'ai bricolé à la main le lien qui ne marchait pas, vu qu'effectivement il y manquait le nom de page :

http://www.monsite.fr/fr/?token=1234567&id_customer=123

pour en faire :

http://www.monsite.fr/password.php?token=1234567&id_customer=123

 

... et ça a fonctionné ! ça m'a mis sur la piste des url simplifiées.

Après les avoir désactivées dans le BO ( Outils > Générateurs ) , j'ai refait la démarche "mot de passe oublié" : bingo, le lien fourni dans le mail est d'emblée bien formé.

 

Webshop, est-ce que ce réglage fonctionne pour toi aussi ?

 

Hélas dès que je réactive les urls simplifiées, , le problème revient.

 

Gregory, c'est quoi que tu appelles "la partie métas en BO" ?

 

Bon je vais de ce pas effectuer les màj que tu conseilles, mais d'abord : une sauvegarde complète comme il se doit !

je reviens après...

Share this post


Link to post
Share on other sites

Je veux dire la partie Préférences > SEO & URLs, les urls re ecrites pour la page password.php

 

Ce n'est pas à vous de mettre password.php car en url re ecrite c'est http://www.monsite.fr/fr/mot-de-passe-oublie?token=1234567&id_customer=123

 

Cordialement

Share this post


Link to post
Share on other sites

Suite : j'ai une solution, merci Grégory :)

(sans avoir besoin de mettre-à-jour la version de Prestashop ... encore que ça aurait pu marcher aussi ?)

 

Dans Préférences > SEO, effectivement l'url simplifiée n'était pas renseignée pour password.php (ligne 7 du tableau) : j'ai renseigné mot-de-passe-oublie , et tout semble fonctionner normalement désormais.

 

Au préalable, j'avais mis à jour le fichier controllers/PasswordControllers.php comme recommandé, mais la nouvelle version ne résolvait pas le bug.

 

Apparemment dans ce fichier, au moment de générer le long url qui va ramener le client sur la boutique, la fonction suivante faisait mal son boulot:

self::$link->getPageLink('password.php', true)

- ça retournait bien password.php en mode "url pas simplifiées",

- en revanche en mode "url simplifiées", au lieu de retourner mot-de-passe-oublie , ça renvoyait rien, d'où un lien qui ne marche pas, jusqu'à ce que je déniche le réglage dans Préférences > SEO

 

 

J'éspère que la solution sera utile à d'autres, mais je ne m'explique pas que le tableau dans Préférences > SEO ne soit pas renseigné correctement dès l'install, et encore moins que le bug n'ait pas surgi + tôt !

 

Encore merci Gregory !

Edited by Rom Soul (see edit history)

Share this post


Link to post
Share on other sites

Webshop,

 

si tu es encore parmi nous, peux-tu nous dire si ça fonctionne chez toi ?...

Share this post


Link to post
Share on other sites

Bonjour Rom Soul et Gregory,

 

Et merci pour ces quelques pistes.

 

Pour ma part, cela ne semble pas lié aux urls simplifiées qui sont correctement renseignées. Le lien envoyé semble correct :

http://www.monsite.f...e&id_customer=2

 

De plus, je ne comprends pas que ce soit juste certains clients et pas d'autres qui rencontrent le problème.

 

Quoiqu'il arrive, une proportion importante atterrit toujours sur une page contenant le message d'erreur :

" 01. Impossible de régénérer votre mot de passe avec les informations transmises"

 

Edit pour Gregory :

Je n'ai pas modifié le fichier _COOKIE_IV_ dans /config/settings.inc.php

J'ai fais la maj du fichier PasswordController.php mais je n'ai pas de moyen pour constater si le bug est résolu étant donné que sur tous mes tests cela fonctionne.

Edited by Jean Boy (see edit history)

Share this post


Link to post
Share on other sites

 

Edit pour Gregory :

Je n'ai pas modifié le fichier _COOKIE_IV_ dans /config/settings.inc.php

 

 

L'url du site n'a jamais changé, le settings.inc.php non plus ? "De plus, je ne comprends pas que ce soit juste certains clients et pas d'autres qui rencontrent le problème." est caractéristique,

 

Tu as un exemple de mail problématique que tu pourrais me forward par email ?

 

Cordialement

Share this post


Link to post
Share on other sites

Salut Gregory,

 

En effet, le domaine est passé de .fr à .com au début de sa création.

 

Saurais tu me guider pour résoudre ce problème ?

 

Merci de ton aide,

Share this post


Link to post
Share on other sites

Les gens qui ont des cookies sur le .fr doivent supprimer ces cookies. Je ne pense pas qu'il y ait grand chose à faire à part cela.

 

Cordialement

Share this post


Link to post
Share on other sites

Bonjour,

J'ai le même problème avec prestashop 1.5.1, lorsque un de mes client oubli son mot de passe il reçoit bien un lien par mail mais le lien renvoie sur une page avec ce texte

"Bonjour, vous venez de saisir une date de naissance qui ne vous permet pas de créer un compte sur ce site. Si vous n'êtes pas majeur veuillez ne pas vous inscrire sur ce site merci www.armagnac-du-gers.fr!! Voici le lien que j'ai

http://armagnac-du-gers.fr/fr/mot-de-passe-oublie?token=f2ecb6c5bf74917db0ed15e0a303aeb0&id_customer=19

Pouvez vous m'aider !!

Edited by xavpiaf (see edit history)

Share this post


Link to post
Share on other sites

Je me souviens pas exactement je cherche.

C'est un message que j'avais mis pour signaler que le client doit être majeur pour créer un compte.

Share this post


Link to post
Share on other sites

Voilà j'ai retrouvé ça je lai mis dans le fichier Validate.php dan cette fonction

 

public static function isBirthDate($date)

{

if (empty($date) || $date == '0000-00-00')

return true;

if (preg_match('/^([0-9]{4})-((0?[1-9])|(1[0-2]))-((0?[1-9])|([1-2][0-9])|(3[01]))( [0-9]{2}:[0-9]{2}:[0-9]{2})?$/', $date, $birth_date))

{

 

 

 

$datejour = date('d-m-Y');

$djour = explode("-", $datejour);

$djour = ($djour[2]-18).$djour[1].$djour[0];

 

$date= explode("-",$date);

$b="0";

 

if ($date[1]<=9 && $date[2]<=9 )

{$date=$date[0]."0".$date[1]."0".$date[2];}

else if($date[1]<=9 && $date[2]>9)

{$date=$date[0]."0".$date[1].$date[2];}

else if($date[1]>9 && $date[2]<=9)

{$date=$date[0].$date[1]."0".$date[2];}

else

$date=$date[0].$date[1].$date[2];

 

 

if ($date >= $djour)

{echo "Bonjour, vous venez de saisir une date de naissance qui ne vous permet pas de créer un compte sur ce site. Si vous n'êtes pas majeur veuillez ne pas vous inscrire sur ce site merci www.armagnac-du-gers.fr!!!";}

else return true;

 

 

}

return false;

}

Share this post


Link to post
Share on other sites

Rebonjour,

 

Et bien désolé mais votre problème est là. Je vous invite a confier vos développements spécifiques à une personne dont c'est le métier car ce code n'a rien a faire dans ce fichier.

 

Cordialement

Share this post


Link to post
Share on other sites

Re Gregory,

 

Les gens qui ont des cookies sur le .fr doivent supprimer ces cookies. Je ne pense pas qu'il y ait grand chose à faire à part cela.

 

Cordialement

 

J'en profites pour ajouter que les clients concernés sont :

- issus d'une ancienne BDD de client importés grâce à la méthode CSV et dont la date de création de compte est affichée dans le BO à 00:00:00 00/00/0000.

- Inscrits avant le basculement du site de .fr en .com

 

N'y a t il pas un moyen de demander la réinitialisation du cookie sur les navigateurs des clients qui se connectent au site (tous ou partie) ? Car c'est très handicapant pour le CA ce bug.

 

Merci de ton aide ;)

Share this post


Link to post
Share on other sites

Re,

 

Alors, j'ai fais quelques test supplémentaires et je crois avoir mis le doigt sur un souci.

 

Les clients importés depuis le CSV ont une date de création à 00:00:00 00/00/0000.

 

Or les url de récupération de mot de passe de ces comptes importés n'ont pas de tokens. Par exemple :

 

/mot-de-passe-oublie?token=&id_customer=485988

 

Tandis que tous les comptes créés par les utilisateurs dans la base PS ont un token. Exemple :

 

/mot-de-passe-oublie?token=c7ccb6c5dd967b3a2aa1e4f609d9eb90&id_customer=7

 

Par ailleurs, une fois dans la base clients "ps_customoer", il n'y a pas de "secure-key".

 

Une idée ?

 

Merci  :)

Edited by Jean Boy (see edit history)

Share this post


Link to post
Share on other sites

Hello,

 

Effectivement il faut que cette colonne secure_key soit remplie. Elle est bien remplie quand je teste un import de clients sur la version actuelle.

 

 

Cordialement

Share this post


Link to post
Share on other sites

Re, 

 

J'ai trouvé comment recréer un clé MD5 dans le colonne secure_key de la table ps_customer.

 

Pour rappel, sans cette clé MD5, PS ne peut créer de token pour l'url de récupération de mot de passe oublié.

 

La réponse est donné par patd07dans ce sujet : http://www.prestashop.com/forums/topic/282937-resolu-erreur-à-la-confirmation-de-commande-dans-le-bo/

 

Par contre, savez vous pourquoi des imports CSV se trouvent sans clé une fois dans le PS ? Sur quelle élément se base cette génération de MD5 ? Le mot de passe ?

 

Histoire que l'histoire ne se répète pas ...

 

Merci !

Edited by Jean Boy (see edit history)

Share this post


Link to post
Share on other sites

A tout hasard, vous connaissez la commande sql pour remplir la colonne "secure_key" de la table "ps_customer" avec une clé MD5 depuis la colonne "psswd" seulement si cette collonne "secure_key" est vide ?

 

Merci car je n'y connais rien en SQL :unsure:

Edited by Jean Boy (see edit history)

Share this post


Link to post
Share on other sites
Par contre, savez vous pourquoi des imports CSV se trouvent sans clé une fois dans le PS ? Sur quelle élément se base cette génération de MD5 ? Le mot de passe ?

 

Merci !

 

Non désolé, il devrait le faire lui même

 

https://github.com/PrestaShop/PrestaShop-1.4/blob/master/admin-dev/tabs/AdminImport.php#L1077

 

https://github.com/PrestaShop/PrestaShop-1.4/blob/master/classes/Customer.php#L150

 

Vous n'auriez pas des surcharges dans /override/classes/ par hasard ?

 

Cordialement

Share this post


Link to post
Share on other sites

Merci du lien.

 

Mais je crois que mes compétences s'arrêtent à la découverte de la colonne vide de la secure_key. 

L'analyse coeur je la laisse à qui veut investiguer.

 

:D

Share this post


Link to post
Share on other sites

Re,

 

Alors, donc mes clients importés sans secure_key peuvent donc maintenant bien récupérer leur mot de passe via "Mot de passe oublié" : le token se renseigne bien dans l'url de récupération depuis que j'ai rempli la colonne secure_key de la table ps_customer.

 

Mais un autre problème est apparu : les commandes des clients affectés par le problème précédent peuvent correctement commander par contre aucune facture n'est générée. Sur les mails de confirmation les montants apparaissent bien mais la ligne "intitulé du produit" est vide, aucun PDF n'est généré.

 

C'est moins critique dans la mesure ou on peut retrouver la commande dans le dernier panier, mais bon ... comptablement c'est critique.

 

Sachant que nous connaissons la source (les clients sans secure_key à date de création à 0000-00-00 00:00:00).

 

Une idée ?

Share this post


Link to post
Share on other sites

Je veux dire la partie Préférences > SEO & URLs, les urls re ecrites pour la page password.php

 

Ce n'est pas à vous de mettre password.php car en url re ecrite c'est http://www.monsite.fr/fr/mot-de-passe-oublie?token=1234567&id_customer=123

 

Cordialement

Bonjour à vous,

bah moi je suis en 1.5.6 , mon url simplifiée pour password.php est correctement paramétrée, mais je crois que c'est lors de la création du token que ça me renvoie au mauvais endroit :(

ça me redirige en erreur 500 . Comme je suis en serveur privé j'ai peut être raté quelque chose ....

 

(Si vous souhaitez confirmer cette demande, cliquez sur le lien suivant :

http://www.tsointsoin.fr/mot-de-passe-oublie?token=064fa69ea2fce29b7dd0dd912a8d&id_customer=99)

Share this post


Link to post
Share on other sites

Bonjour,

 

Je me permet de remonter le sujet car il n'a pas été entièrement résolu :

 

- Les clients dont la clé key_secure n'était pas renseigné peuvent maintenant retrouver leur mot de passe car la génération de token fonctionne correctement.

 

Mais, nouveau bug, PS ne génère pas correctement les factures de ces clients car il ne met pas le détail des produits.

Les montants et taxes sont corrects, seuls les intitulés ne correspondent pas.

 

Auriez vous une idée d'où cela peut venir ?

Share this post


Link to post
Share on other sites

Bonjour,

 

N'hésitez pas à créer un nouveau sujet pour aborder votre problème et permettre à des personnes d'y répondre spécifiquement (si un modo passe par là ?).

 

Donc je continue sur le sujet :

 

  • Donc les clients importés depuis le CSV ont donc maintenant une secure_key correctement implémentée dans la table ps_customer.
  • Mais, quand ils commandent, PS ne génère pas de facture, et n'affiche pas le detail des produits achetés dans le mail de recap envoyé au client et aux admin.
  • Idem, dans le BO, dans la commande, les produits achetés n'apparaissent pas. Ce qui est critique.
  • Après recherche, il s'avère que PS ne créé pas les lignes correspondantes à la commande dans la table ps_order_detail

 

Question donc :

Comment faire en sorte que PS créé correctement les détails de commande pour ces utilisateurs importés ?

 

Merci de votre aide.

Edited by Jean Boy (see edit history)

Share this post


Link to post
Share on other sites

Bonjour à tous,

 

Je me permet de faire remonter ce post, car je ne trouve aucune réponse à mon problème. Je vous explique.

 

Ma cliente ne se rappelle plus de ce mot de passe, elle clique sur mot de passe oublié. Elle reçoit bien le premier mail demandant si elle veut réinitialiser le mot de passe. Elle clique sur le lien qui la ramène sur mon site en lui disant que le mot de passe a été réinitialisé et qu'elle va recevoir le nouveau par mail. Mais ne reçoit jamais de mail ...

 

J'ai testé la manip avec mon adresse email et exactement la même chose (donc mon mdp a été réinitialisé mais je ne sais même pas par quoi XD)

 

Avez-vous une idée du soucis ?

 

Merci de vos contributions, vous avez déjà réglé pas mal de soucis même sans que je poste jusqu'à présent rien qu'en lisant le forum à longueur de journée, mais la je bloque.

Share this post


Link to post
Share on other sites

Hello,

 

Quelle version de PrestaShop ?

 

Vérifiez que le mail existe bien sur le serveur /mails/fr/password.html

 

Si vous passez le mode_dev à true dans /config/defines.inc.php, une erreur apparait quand le mot de passe a été réinitialisé ?

 

Sinon il faudrait regarder les logs du serveur Apache pour voir si il y a une erreur pendant de l’envoi de ce mail, il faudrait verifier aussi que le mot de passe est bien effectivement changé.

 

Cordialement

Share this post


Link to post
Share on other sites

Merci !

 

J'ai effectué le changement en passant le mode_dev du fichier config/defines.inc.php à true et cela a fonctionné avec mon adresse email.

 

Pour info je suis sous presta 1.5.3.1 et le mail existait bien.

 

Merci encore, quelle rapidité et efficacité. J'espère que cela fonctionnera aussi pour mes clients comme pour moi.

 

Bonne journée à vous.

Share this post


Link to post
Share on other sites

Hello,

 

Le mod_dev c'est juste pour afficher des erreurs. Cela n'a rien changé à la routine. Il  y a un quiproquo là.

 

Ne laissez pas le mode_dev en production. Votre erreur semble autre part.

 

Cordialement

Share this post


Link to post
Share on other sites

Ah zut ... J'ai juste changé la configuration de la réinitialisation du mot de passe en mettant 0 pour le temps minimum entre chaque, ce qui n'a rien à voir... Je désactive le mode_dev alors.

 

Mais je ne sais pas pourquoi j'ai reçu le mail cette fois. Les deux fois, ça me mettait bien le message "mail envoyé" etc mais la première fois je n'ai rien reçu et tout à l'heure oui. En passant juste le mode_dev de false à true...

Share this post


Link to post
Share on other sites

Re,

 

Il peut y avoir d'autre raison, si vous utilisez la fonction mail() du serveur plutot qu'un smtp, c’est possible que le mail tombe en spam ou soit bloqué par un relai. C'ets un peu dur à dire quel est le souci ici, il faudrait debugguer et/our regarder le logs du serveur Apache désolé.

 

Cordialement

Share this post


Link to post
Share on other sites

J'utilise bien la fonction mail() C'est très bizarre que cela est marché cette fois sans rien changer... Pas pratique pour comprendre.

 

Je ne sais pas où trouver ce dont vous me parlez à la fin par contre... Cela se trouve sur mon hébergement le serveur Apache ?

Share this post


Link to post
Share on other sites

Je rencontre également ce problème de re-génération de mot de passe lorsqu'il est oublié.

Le mail est bien envoyé au client.

Le lien qui apparait en clair est bien le bon si l'on fait un copié-collé ;

http://cramcram.fr/recuperation-mot-de-passe?token= (etc)

dans ce cas, il y a bien re-génération d'un mot de passe avec envoi sur la BAL du client.

 

Par contre, le lien ne vise pas la bonne adresse si on clique dessus.

http://r.ae.d.sendibt1.com/link.php?str=Mzc2NzI1MzR%2BY3liZXJkamlubjNAeWFob28uY29tfjwyMDE2MDEwNDEwNDAwNy4xODcyMTM4NTE1LnN3aWZ0QGNyYW1jcmFtLmZyPn4%3D&mailin-url=%7Burl%7D

 

Une idée ?

Share this post


Link to post
Share on other sites

Bonjour à tous,

J'avais exactement le même problème sur une version prestashop 1.6.1.23.

Le premier mail de récupération du mot de passe était bien envoyé, seulement le lien n'était pas cliquable et ne renvoyait nulle part.

Suite à ce que j'ai pu trouver en ligne et en lisant vos conversation, j'ai modifié dans Préférence > SEO & URL dans la ligne 7 mot de passe, j'ai changé la valeur de URL réécrite en : mot-de-passe-oublie

Ensuite dans le fichier /themes/montheme/mails/fr/password_query.html, j'ai fait la modification suivante ligne 87 pour moi (ligne de la création du lien en HTML)

Avant j'avais ça :

Si vous souhaitez confirmer cette demande, cliquez sur le lien suivant : <br /><a href="%7Burl%7D" style="color:#337ff1;">{url}</a>

Si vous souhaitez confirmer cette demande, cliquez sur le lien suivant : <br /><a href="%7Burl%7D" style="color:#337ff1;">{url}</a>

J'ai modifié comme suit

Si vous souhaitez confirmer cette demande, cliquez sur le lien suivant : <br /><a href="{url}" style="color:#337ff1;">{url}</a>

J'ai ensuite vidé tous les caches et puis ça fonctionne !

Merci à tous, j'espère que ma solution pourra en aider d'autres :D.

Bon courage à tous.

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More