Jump to content

Redirection après authentification systématique sur page mon compte


Recommended Posts

Bonjour.

 

Je viens d'installer la dernière version de Prestashop 1.6. J'ai installé un thème Templatin, compatible 1.6.

Mon problème est que lorsque mon panier contient des articles et que je m'identifie ou créé un compte, je suis automatiquement redirigé sur la page mon compte, au lieu de la page du choix de l'adresse de livraison.

J'ai testé en prenant le thème de base de Prestashop 1.6 et ça me fait la même chose.

Je n'arrive pas à voir d'où vient ce bug car tout le reste fonctionne parfaitement.

Est-ce un problème de cookies ?

Est-ce lié à un paramétrage du fichier php.ini (le site est sur un serveur mutualisé de 1and1) ?

Je sèche complètement.

J'ai regardé sur le forum et je ne suis pas le seul à avoir ou avoir eu ce problème. Sauf que c'était avec des versions anciennes de Prestashop 1.4 ou 1.5 et les correctifs proposés ne m'ont pas aidé.

 

Est-ce que qqn aurait une piste ?

 

Link to comment
Share on other sites

Pas évident de trouver l'origine de ce bug.

Je suis donc allé voir du coté du fichier /controllers/front/AuthController.php

Chaque fois qu'il y avait un

Tools::redirect('index.php?controller='.(($this->authRedirection !== false) ? urlencode($this->authRedirection) : 'my-account'));

je l'ai remplacé par :

Tools::redirect('index.php?controller='.(($this->authRedirection !== false) ? urlencode($this->authRedirection) : 'order?step=1'));

De cette façon, je me suis rendu compte que dans mon cas, seul celui de la ligne 329 est utilisé quand je m'identifie.

En fait, ce que je ne comprends pas, c'est que dans mon fichier : authentication.tpl qui se trouve dans mon dossier /theme/MON_THEME/, la variable $back est bien renseignée. Et si je regarde le code source de ma page, j'ai bien :

<input type="hidden" class="hidden" name="back" value="http://www.cafelaminga.com/commande?step=1&amp;multi-shipping=0" />

Mais pour je ne sais quelle raison, quand je clique sur le bouton pour m'identifier, je ne suis pas redirigé sur cette page mais systématiquement sur mon-compte.

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

J'ai finalement trouvé la solution dans ce post :
http://www.prestashop.com/forums/topic/321793-parameter-back-login-solved/page-2

En fait, apparemment, il s'agit d'un bug de Prestashop lié à SSL (que je n'utilise pas et qui n'est donc pas activé).

Dans le fichier /controllers/front/AuthController.php
il faut remplacer :

if (($back = Tools::getValue('back')) && $back == Tools::secureReferrer($back))

par :

if (($back = Tools::getValue('back')) )

Il y a 4-5 remplacement à faire.

Pour faire propre, on va surcharger ce controller en copiant le fichier dans :
/override/controllers/front/
La version qui se trouve dans :
/controllers/front/
doit rester inchangée.

Il suffit ensuite de vider le cache et dans le doute, j'ai aussi supprimé le fichier :
/cache/class_index.php
 

Et voilà, grâce à cela, ça fonctionne nickel.

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

Je continue à me répondre :)

Finalement, la solution proposée ci-dessus était un pansement mais l'origine du problème est liée au fait que ServerName me renvoie site.fr au lieu de www.site.fr

Pourtant, dans le BO de Prestashop, j'ai bien renseigné www.site.fr

Pour le moment, je ne sais pas pourquoi j'ai ça.

Du coup, en attendant de trouver, j'ai surchargé le fichier Tools.php et donc la fonction public static function secureReferrer($referrer).

J'ai remplacé :

if (preg_match('/^http[s]?:\/\/'.Tools::getServerName().'(:'._PS_SSL_PORT_.')?\/.*$/Ui', $referrer))

par :

if (preg_match('/^http[s]?:\/\/'.Tools::getServerName().'(:'._PS_SSL_PORT_.')?\/.*$/Ui', $referrer) || preg_match('/^http[s]?:\/\/(www.)'.Tools::getServerName().'(:'._PS_SSL_PORT_.')?\/.*$/Ui', $referrer))

et ça fonctionne.

  • Like 1
Link to comment
Share on other sites

  • 2 months later...
  • 2 months later...

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...