Davidesigner Posted August 23, 2015 Share Posted August 23, 2015 Bonjour, J'ai un problème assez étrange et je ne trouve pas de réponse à ce sujet... Serais-je le seul à le rencontrer ? Mon environnement : Prestashop 1.6.0 Theme Default ou Mon thème (même résultat) Posons le décors, j'essai d'inclure l’authentification dans le header pour éviter d'être redirigé vers la page d'authentification classique lorsque l'on souhaite se connecter (chose que j'ai réussi à faire via une création de module, un hook et quelques lignes de js sauf que...). Voilà le problème : 1 fois sur 2, lorsque j'entre mes identifiants et que je clique sur "connexion" (que se soit du header ou de la page connexion classique "authentication") la page se rafraîchis et j'ai alors mon adresse email pré-entré sans mot de passe. Aucun message d'erreur. Si je tente de rafraîchir à ce moment, une alerte apparaît comme suit : 2 Cas de figures un même résultat : - En cliquant sur ok, j'arrive sur la page "mon compte". - Si j'annule et que je navigue vers une autres page de mon site, alors bizarrement je suis connecté.Si maintenant je me déconnecte, mon URL prend alors la valeur back : "?back=my-account" et si je retente de me connecter, alors là j'arrive directement sur la page "mon compte" du premier coup en étant bien connecter.Récapitulatif : - Lors d'une première connexion, cela ne me connecte seulement qu'à partir du deuxième rafraîchissement de page.- Si je viens de me déconnecter, je peux me reconnecter du premier coup tout de suite. - Si je me suis connecter, puis déconnecter et que je tente de me reconnecter après avoir naviguer, rebelote, connexion après 2ème rafraîchissement...Un grand merci à tous pour votre aide, démarrant Prestashop depuis 3 jours je ne peux pas trop aider en retour pour le moment :/Au plaisir,David Link to comment Share on other sites More sharing options...
prestasafe Posted August 23, 2015 Share Posted August 23, 2015 Bonjour, Je pense qu'il s'agit d'un problème de cache et de cookies. Pour commencer supprime tout tes cookies.Ensuite pour que ton authentification fonctionne bien, jte conseille de lancer l'authentification puis de faire une redirection pour que ce soit bien prise en compte.Comment marche ton module exactement ? il faut appel à la page de connexion ? ou bien c'est toi qui l'a fait manuellement ?? Cordialment Link to comment Share on other sites More sharing options...
Davidesigner Posted August 23, 2015 Author Share Posted August 23, 2015 Bonjour merci de ta réponse, Ma première hypothèse était bien le cache et les cookies mais même en désactivant le cache et en effaçant tous les cookies, rien n'y fait, le problème persiste. Pour ce qui est du fonctionnement de mon module, je fais simplement un appel de la page authentication.tpl si l'utilisateur n'est pas connecté comme suit :{include file="$tpl_dir./authentication.tpl"} Ensuite quand tu dis : Ensuite pour que ton authentification fonctionne bien, jte conseille de lancer l'authentification puis de faire une redirection pour que ce soit bien prise en compte. Qu'est ce que tu entends par faire une redirection ?J'ai déjà tenté de modifier le formulaire d'identification de la pages "authentication.tpl" en mettant la valeur action du form à une redirection vers la page actuelle comme ceci : action="{$smarty.server.REQUEST_URI}", mais cela ne fonctionne plus tout après cette modification donc je suis revenu sur la configuration de base qui est la suivante : action="{$link->getPageLink('authentication', true)|escape:'html':'UTF-8'}". Link to comment Share on other sites More sharing options...
Eolia Posted August 23, 2015 Share Posted August 23, 2015 (edited) Bonsoir, le fonctionnement par défaut après l'authentification est de renvoyer sur la page mon compte. Regardez le code dans AuthController.php : if (!$this->ajax) { if (($back = Tools::getValue('back')) && $back == Tools::secureReferrer($back)) Tools::redirect(html_entity_decode($back)); Tools::redirect('index.php?controller='.(($this->authRedirection !== false) ? urlencode($this->authRedirection) : 'my-account')); } Dans smarty, vous pouvez récupérer le nom de la page avec la variable {$page_name} Edited August 23, 2015 by Eolia (see edit history) 1 Link to comment Share on other sites More sharing options...
Davidesigner Posted August 23, 2015 Author Share Posted August 23, 2015 Merci beaucoup Eolia !Mon problème principale n'est pas réglé pour autant mais cette réponse m'aide pour a suite Link to comment Share on other sites More sharing options...
Eolia Posted August 23, 2015 Share Posted August 23, 2015 (edited) Allez c'est un jour de bonté, je vous donne la solution. Dans le form de votre page ajoutez ceci: <form action="{$link->getPageLink('authentication', true)|escape:'html'}" method="post"> blablabla <input type="hidden" name="back" value="{$link->protocol_link}{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}"> blablabla </form> Depuis la 1.5, vous pouvez normalement utiliser la variable{$request} à la place de {$link->protocol_link}{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI} Edited August 23, 2015 by Eolia (see edit history) 1 Link to comment Share on other sites More sharing options...
Davidesigner Posted August 23, 2015 Author Share Posted August 23, 2015 Ho excellent ! Je peux marquer ce topic comme "résolu" maintenant. Je vous remercie cela a réglé le problème de décalage à merveille Link to comment Share on other sites More sharing options...
Eolia Posted August 24, 2015 Share Posted August 24, 2015 Pour être complet et éviter un retour à la page mon compte si l'internaute utilise votre form lors de la page 2 de la commande, mettez ceci dans votre form: <input type="hidden" name="back" value="{if !$smarty.get.back}{$request|escape:'htmlall':'UTF-8'}{else}{$smarty.get.back|escape:'htmlall':'UTF-8'}{/if}"> et remplacez la condition du camp caché dans authentication.tpl: {if isset($back)}<input type="hidden" class="hidden" name="back" value="{$back|escape:'htmlall':'UTF-8'}" />{/if} Par : <input type="hidden" class="hidden" name="back" value="{if !$back}{$request|escape:'htmlall':'UTF-8'}{else}{$back|escape:'htmlall':'UTF-8'}{/if}" /> <input type="submit" id="SubmitCreate" name="SubmitCreate" class="button_large" value="{l s='Create your account'}" /> Link to comment Share on other sites More sharing options...
Davidesigner Posted August 24, 2015 Author Share Posted August 24, 2015 Merci pour ces compléments mais j'ai préféré rendre mon formulaire inaccessible si l'internaute est sur la page d'authentification. Cela n'a pas grand intérêt d'avoir 2 fois les mêmes éléments...Cependant, merci pour votre code qui me permet quand même d'améliorer mon formulaire pour les autres pages.J'ai décidé de désactiver mon formulaire sur la page d'authentification car les deux formulaires (l'original et le mien) ne fonctionnaient pas ensemble... Je ne pouvais me connecter d'aucun formulaire, et je ne pouvais pas non plus créer un compte du formulaire d'origine. A chaque fois, cela me renvoyait l'erreur au niveau de mon formulaire dans la partie inscription "email invalide" alors qu'il était bien valide...Enfin bref, je ne sais pas pourquoi mais c'est pas très grave puisque comme je le disais, il n'y a aucun intérêt à répéter deux fois la même information.Merci encore pour votre aide David Link to comment Share on other sites More sharing options...
Eolia Posted August 24, 2015 Share Posted August 24, 2015 Moi je disais ça, je n'ai rien dit, hein... J'ai juste modifié le module blockmyaccount pour rajouter ce petit form si pas connecté et ayant vu le souci par rapport à la page panier, je transmettais l'info. Link to comment Share on other sites More sharing options...
Eolia Posted August 24, 2015 Share Posted August 24, 2015 pour votre erreur le problème doit venir du fait que vous avez utilisé les mêmes id="email" et passwd, donc 2 id identiques sur la page (c'est mal) et le dernier lu est pris en compte, donc s'il est vide, forcément, ça coince... Link to comment Share on other sites More sharing options...
Davidesigner Posted August 24, 2015 Author Share Posted August 24, 2015 Ha je n'avais pas pensé aux ID... Bien vu Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now