Laravel 5

Tunnel de commande en Laravel et transmission des infos de page en page

  • Avatar de Charlie_Web_Nancy
    Membre depuis :
    10/08/2016
    Messages :
    78

    Hello,

    Je suis en train de réaliser un tunnel de commande sur un site de reservation et je voudrais votre avis.

    Etape 1

    Choix du produit. Un simple lien "Réserver" qui pointe vers /reservation/{id_produit} (Type GET)

    Etape 2

    L'utilisateur remplit les champs habituels (Nom, prénom, adresse, etc.) et choisit un mot de passe. Le formulaire est envoyé via POST au controller ReservationController.
    Dans ce dernier, je crée un nouveau modèle User basé sur les champs du formulaire, dont le mot de passe qui est crypté avec bcrypt(), et un nouveau modèle Reservation.
    Mais je ne les enregistre pas dans la base de données, je les transmets à la page suivante avec return view('paiement', compact('produit', 'user'));

    Etape 3

    Dans la vue paiement, j'ai ainsi accès à toutes les données du formulaire. Je ne sauve en bdd le nouveau User et la nouvelle Reservation qu'après cette étape paiement.
    Dans le formulaire suivant, je récupère dans des input hidden tous mes champs, dont le mot de passe. Bien qu'il soit crypté, est-ce un risque potentiel ? Il se retrouve quand-même dans le html (chez l'utilisateur connecté, bien sûr)... Y'a t'il un moyen plus safe et/ou plus Laravel ?

    Toujours dans cette page, je souhaiterais avoir un bouton "précedent" ou "retour". Mais si je fais un simple

    <a href="{{ url()->previous() }}">Retour</a>

    je n'ai pas tous les champs saisis par l'utilisateur, quel serait le moyen le plus simple de renvoyer ces valeurs à la page précédente ? Un peu comme l'instruction redirect()->back()->withInput() mais depuis une vue. Et comment faire pour le mot de passe ? Le renvoyer ? Obliger l'utilisateur à le saisir à nouveau ? J'imagine qu'il est impensable de le stocker dans la session...

    Ca me fait un peu peur ces infos qui se baladent de page en page, j'ai peur de faire une bêtise, c'est la première fois que je réalise un tunnel de commande.

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2274

    Salut,

    Je n'ai pas encore eu l'occasion de faire ce genre de chose et je n'en ai donc aucune expérience. Etant donné le nombre de scripts e-commerce qui existent il doit bien exister une stratégie standardisée.

    Il me semble que tes va-vient de toutes tes infos est un peu acrobatique. Personnellement je mémoriserais tout de suite les données de l'utilisateur pour lui créer une jolie session et j'ouvrirai aussi un panier, comme ça on est sûr de ne rien perdre et si l'utilisateur revient plus tard il pourra retrouver tout ça. Il est facile de gérer ensuite le fait que la réservation soit allée au bout ou pas et alors de faire le ménage éventuellement dans la base. En plus ça résoudrait tes marches arrière...

    Je me pose aussi la question de la gestion côté client et jusqu'où aller. Il y a des boutiques carrément montées en SPA qui sont du coup rapides et très légères en requêtes HTTP.

  • Avatar de Charlie_Web_Nancy
    Membre depuis :
    10/08/2016
    Messages :
    78

    Merci bestmomo,

    en fait mon site est un peu particulier, c'est un site sur lequel un utilisateur ne va réserver qu'un seul évenement maximum en une fois, et il y a peu de chances pour qu'il revienne souvent, voire peu de chances pour qu'il revienne tout court. C'est pourquoi je ne fais pas un tunnel standard, dans lequel effectivement, j'aurais pu créer un compte directement avec login et mot de passe puis m'occuper de la réservation ensuite. C'est aussi pourquoi je n'ai pas besoin de panier.

    Cela dit, à quoi tu penses quand tu parles d'enregistrer et de faire le ménage dans la base après ? Avec un délai ? Du genre Si tel utilisateur n'a toujours pas effectué de réservation au bout de x minutes, on le supprime ? Ca me semble un peu bizarre... ou je n'ai pas bien compris

    Ici, pour info, j'ai à l'étape 2 un nombre de champs assez important, date de naissance, lieu de naissance, profession... et d'autres. Donc c'est un peu différent d'un site e-commerce habituel. J'aimerais que ce soit le plus rapide et simple pour l'utilisateur (le public cible est potentiellement, disons... très très novice). Donc pas de génération de mot de passe, ou de panier, ou d'étapes superflues. Je souhaite un seul formulaire avec toutes les infos puis directement paiement à la page d'après.

    Les SPA c'est très intéressant, mais je ne suis pas parti là dessus, et je ne sais pas faire, donc peut-être pas pour cette fois... ou alors juste pour la partie tunnel de commande... ?

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2274

    Ah je comprends mieux le besoin...

    Pour le ménage il m'arrive de faire ce genre de chose en prévoyant par exemple un champ qui indique si le truc est validé. Après on peut faire un ménage automatisé avec une tâche CRON ou à la main dans l'adminustration.

    Sinon dommage pour le SPA parce que ça paraît bien adapté dans ce cas...

    Sinon s'il y a beaucoup de données à saisir ça serait dommage que l'utilisateur perde tout pour une raison quelconque. Personnellement je sais que c'est le genre de chose qui m'agace quand je dois remplir plusieurs fois le même formulaire, surtout s'il est long...

    Du coup je ne vois pas l'intérêt de générer un mot de passe et de le promener, la session suffit pour identifier ton utulisateur...

  • Avatar de Charlie_Web_Nancy
    Membre depuis :
    10/08/2016
    Messages :
    78

    Non, il n'y a pas de génération de mot de passe, l'utilisateur le choisit à l'étape 2 en remplissant les autres champs. Il a tout de même besoin d'un compte car il faut qu'il puisse gérer sa réservation (l'annuler par ex.) C'est pour ça qu'il se promène...

    Pour le truc du spa, je vais regarder mais s'il faut que je refasse tout, ça va pas être possible... :-D

    Et on est d'accord que ça serait dommage que l'utilisateur perde tout. Je vais faire comme tu dis je pense :

    Je pourrais par exemple supprimer l'utilisateur de la bdd s'il n'a pas de reservation à son actif et que sa session n'existe plus... qu'en penses-tu ?

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2274

    En fait il a besoin d'un compte si après il peut gérer sa réservation pour l'annuler, donc on revient dans un schéma plus classique.

Vous ne pouvez pas répondre à ce sujet.