THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,

Quand un client va sur l'écran de mot de passe oublié (2.0.4) qui est la template "password", il remplit son email et clique "envoyer", on reçoit bien un email avec le nouveau mot de passe. Cependant le problème est qu'après l'envoi, on reste sur le même écran avec l'adresse email effacée, donc en gros 99 clients sur 100 recommencent plusieurs fois en pensant que ça n'a pas marché jusqu'à entendre (si son il y a) le beep des emails qui arrivent avec les nvx mots de passe ... le client étant sans patience, il prend le dernier mot de passe envoyé, sauf que n'ayant pas attendu les qqes secondes/minutes nécessaires, ce message n'est pas le dernier mot de passe envoyé mais l'avant-dernier ... bref on rentre dans une spirale d'incompréhension et on m'appelle :-(

Je pense que l'idéal serait de revenir vers l'écran de login, mieux avec un message demandant d'aller regarder le mail ... Comment pourrait-on faire ça ?

Pierre

Offline


N'arrivant pas à éditer mon message, je précise qu'une première question importante que je me pose est de savoir si ça n'est que mon installation (je n'ai pourtant faut que des modifs "design" sur cette page) ou si c'est pareil pour tout le monde ... Si quelqu'un avec une 2.0.4 pouvait vérifier ... Merci d'avance !

Pierre.

Offline


Vérifie dans le formulaire d'envoi de l'adresse e-mail que le paramètre "success_url" est bien présent, et qu'il contient la route vers la page affichés lorsque le mot de passe a été envoyé :

{form_field form=$form field="success_url"}
    <input type="hidden" name="{$name}" value="{url path='/password-sent'}">
{/form_field}

OpenStudio Toulouse

Offline


Bonjour,

A priori il n'y a pas ce que tu me proposes (ni dans ma template ni dans celle de défaut), voici ce que j'ai. J'ai tenté de rajouter ce que tu suggères, mais ça ne change rien, je reviens vers la page password (ça parait logiqye étant donné que c'est dans l'action du form). Ci-dessous le code exact de la template "password" par défaut.

{block name="main-content"}
    <div class="main">
        <article class="col-main" role="main" aria-labelledby="main-label">
            <h1 id="main-label" class="page-header">{intl l="Password Forgotten"}</h1>
            {form name="thelia.front.customer.lostpassword"}
            <form id="form-forgotpassword" action="{url path="/password"}" method="post">
                {form_hidden_fields form=$form}
                <p>{intl l="Please enter your email address below."} {intl l="You will receive a link to reset your password."}</p>
                {if $form_error}<div class="alert alert-danger">{$form_error_message}</div>{/if}
                {form_field form=$form field="email"}
                <div class="form-group group-email {if $error}has-error{elseif !$error && $value != ""}has-success{/if}">
                    <label for="{$label_attr.for}">{$label}</label>
                    <div class="control-input">
                    <input type="email" name="{$name}" value="{$value}" id="{$label_attr.for}" class="form-control" maxlength="255" aria-required="true" autofocus required>
                    {if $error}
                        <span class="help-block">{$message}</span>
                    {elseif !$error && $value != ""}
                        <span class="help-block"><span class="icon-ok"></span> {intl l="You will receive a link to reset your password."}</span>
                    {/if}
                    </div>
                </div>
                {/form_field}
                <div class="group-btn">
                    <a href="{url path="/login"}" class="btn btn-cancel">{intl l="Cancel"}</a>
                    <button type="submit" class="btn btn-forgot">{intl l="Send"}</button>
                </div>
            </form>
            {/form}
        </article>
    </div>
{/block}

Je peux changer l'action par par exemple "/login" pour revenir sur l'écran de login, mais je doute qu'après ça ça envoit le mot de passe ...

Offline

Offline


Sérieux ? la boutique est en ligne depuis même pas 15j et c'est la seule solution ? (quand j'ai mis en ligne c'était bien la version up to date).
C'est quoi l'impact en terme de templates ? il faut tout refaire ???

Offline


Ben disons que si tu n'utilise pas le code que je t'ai conseillé, ça ne peut pas marcher.

"success_url" permet de spécifier l'URL ou sera redirigé le client en cas de succès. Si tu ne l'indique pas, la page courante sera ré-affichée. (voir http://doc.thelia.net/en/documentation/form/index.html)

Donc tu ajoutes success_url à ta form, et ça va marcher.

Voilà.


OpenStudio Toulouse

Offline


Non je me suis mal fait comprendre, j'ai ajouté le code proposé à celui que j'ai copié-collé, ça ne marche pas. J'ai copié-collé :

{form_field form=$form field="success_url"}
<input type="hidden" name="{$name}" value="{url path='/login'}">
{/form_field}

juste derrière

{form_hidden_fields form=$form}

... Par rapport àce que tu as donné j'ai juste mis "/login" comme path pour retourner à l'écran de login. Ce code est sensé marcher en 2.0.4 ?

Offline


Oui, ce code est sensé, et aussi censé marcher en 2.0.4.


OpenStudio Toulouse

Offline


Oui effectivement sensé (enfin j'espère) et censé. Pour l'instant par contre c'est ni l'un ni l'autre sur mon site, c'est en place et ça ne fonctionne pas.
Le code va-t-il à un endroit spécifique ? il faut qu'il soit entre form et /form je présume ?

Offline


Après "{form_hidden_fields form=$form}" c'est très bien.


OpenStudio Toulouse

Offline


Je l'ai mis là, marche pas. J'ai essayé avec /login, /password-sent (comme proposé), /password/sent, ça revient toujours à /password, même en ayant bien créé un password-sent.html.

"/password" étant dans l'action du form, n'est-ce pas cela qui empêche tout autre sortie ? Mais bon je vois le même genre de déclaration par exemple dans order-invoice pour les coupons, là ça fonctionne donc je suppose qu'il y a autre chose qui interfère, même si ma template est standard. Je vois pas ou serait le souci.

Offline


J'ai passé mon installation locale en 2.1.1 et ça marche direct (j'ai d'autres soucis, je vais ouvrir un autre fil). Donc il y a à priori un pbm en version 2.0.4 avec cette syntaxe.

Offline


Bonjour,

Je reviens sur cette problématique de success_url. Maintenant en 2.1.1 la redirection vers l'écran de login fonctionne après qu'on ait fait une procédure de "mot de passe oublié". Mais je découvre un autre "bug" dans les templates.

Après avoir fait la procédure de "mot de passe oublié" on revient sur "login", ok. Là on saisit son login et le nouveau mot de passe reçu et on clique "suivant" ... on est bien "loggé" mais le clic sur suivant nous amène de nouveau sur l'écran "mot de passe oublié". Si on ne fait pas cette procédure "mot de passe oublié", le clic sur suivant nous ramène bien d'ou l'on était parti.

Tout ceci est logique au regard de :

{form_field form=$form field='success_url'}
<input type="hidden" name="{$name}" value="{navigate to="previous"}"> {* the url the user is redirected to on login success *}
{/form_field}

Le "success_url" étant "previous", si on vient de l'écran "mot de passe oublié" et bien ... on y retourne. Le client tourne en rond sans rien y comprendre, sans d'ailleurs voir qu'il est déjà bien loggé. Il refait une procédure et ça part en vrille ...

Bref ma question est de savoir ce que je pourrai bien mettre dans "success_url" sachant que dans le cas normal, "previous" est pas mal (on est loggé, on retourne à l'écran qui avait besoin de login), mais que dans le cas ou on vient de "mot de passe oublié", le "previous" est perdu ... il faudrait pouvoir le stocker pour le réutiliser après l'aller-retour dans "mot de passe oublié" ...  Comment pourrai-je faire ça, il faut transmettre la valeur de "previous" à "password" puis de nouveau à "login" ...

Pierre.

Offline


Tu peux faire en sorte que la page courante ne devienne pas la page précédente smile

 {* This page should not replace the current previous URL *}
{set_previous_url ignore_current="1"}

Voir le template "register.html" pour un exemple.

(je cours documenter cette fonction)


OpenStudio Toulouse

Offline


Bonsoir,

Oui il semble que ce soit ce dont j'ai besoin, mais pour l'instant ça ne marche pas ici. J'ai essayé 1 ou 0 dans le doute, je l'ai mis sur la page "login" et/ou sur la page "password" (sachant que la logique me dit que ce devrait être "1" et sur la page "password" qui ne doit pas devenir "previous"), vidé les divers caches ... no success :-(

Cela devrait marcher en 2.1.1 ou il faut être en 2.1.2 ? Je l'ai mis au même endroit que dans "register".

En plus j'ai fait tellement d'essais que je suis bloqué pour 1 heure ...

Pierre.

Last edited by pierrot (02-03-2015 23:50:13)

Offline


Attention de bien mettre ce code à l'intérieur d'un des  {block}...{/block} existtas, sinon il n'est pas pris en compte...

{block name="main-content"}

    {* This page should not replace the current previous URL *}
    {set_previous_url ignore_current="1"}

    ...

Pour être débloqué, vide la table form_firewall.


OpenStudio Toulouse

Offline


Je pense que je fais tout bien, marche pas. J'ai remplacé le contenu complet de la page password et de la page login de ma template par celles de default et c'est pareil, je reviens toujours à password, énervant.
Un truc doit m'échapper. Faudrait que je ré-installe une version vierge pour ce genre de test.

Bon trouve pas ... grrr.

Pierre

Last edited by pierrot (03-03-2015 23:13:46)

Offline


J'ai eu un moment d'espoir en lisant ce qui avait été réglé par la 2.1.2:

Do not register previous url on XmlHttpRequest

Donc j'ai mis à jour en 2.1.2 sur mon serveur de dev, mais c'est pareil, pas de changement, pour moi

{set_previous_url ignore_current="1"}

n'a pas l'effet escompté. Ou je n'ai pas compris.

Offline


j'ai le meme soucis

{set_previous_url ignore_current="1"}

le client apres avoir demande un nouveau mot de passe revient sur la page password
pourtant j'ai bien set_previous_url....

Thelia version 2.1.2

Offline


Et ce qui est très trompeur c'est que la manip a marché en général, on revient sur la page password alors qu'on est bien loggué ... la plupart des utilisateurs refont la procédure et rentre dans une spirale d'incompréhension ... qui finit par un email de plainte au gérant de la boutique, j'en ai encore un ce matin. C'est vraiment ce genre de problème qui casse la confiance dans un site, on a de la chance si ce client revient.

Je pensais avoir ouvert un ticket, impossible de le retrouver, donc j'en ai fait un:  https://github.com/thelia/thelia/issues/1291

Pierre.

Offline


Lunika a fait un correctif sur ce pbm: https://github.com/thelia/thelia/commit … e73c766261

Testé ici, ça marche, yesss ! Merci !

Offline