Jump to content

Authentification décalage


Recommended Posts

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 :

 

post-1066477-0-19001900-1440302740_thumb.jpg

 

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

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

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

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 by Eolia (see edit history)
  • Like 1
Link to comment
Share on other sites

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 by Eolia (see edit history)
  • Like 1
Link to comment
Share on other sites

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

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

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

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