Besoin d'aide ?

Autoriser l'accès si une variable de session existe

Avatar de micraux
micraux

Bonjour à tous,

Le responsable du site sur lequel je travaille actuellement voudrait que l'internaute qui arrive choisisse d'abord son univers (via une modale par exemple) afin de pouvoir afficher les prix correspondants (particuliers/professionnels).

J'imagine donc peupler une variable de session, dans le construct du Controller : si la variable est vide, c'est que l'internaute n'a pas encore choisi.

Est-ce à votre avis la bonne méthode ?

Merci d'avance à ceux qui voudront bien se pencher sur le sujet !

Avatar de bestmomo
bestmomo

Salut,

Les sessions sont faites pour ça.

Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

Un petit coup de doc pour te pencher sur le sujet. ==> https://laravel.com/docs/7.x/session#retrieving-data Je précise que tu ne peux pas utiliser la session dans un construct()

Tu peux faire un middleware sinon, c'est encore le mieux, je pense.

Avatar de micraux
micraux

Merci pour vos réponses.

@CinquièmeDimension : En faisant quelques recherches, j'ai effectivement vu qu'un middleware pourrait probablement faire l'affaire. Mais je me suis dit que c'était peut-être un peu trop et qu'il y avait probablement une manière plus simple (check de la variable dans le construct et redirection). Concernant la session dans le construct, je viens effectivement de remarquer que je ne pouvais pas procéder ainsi, je vais donc me diriger vers un middleware.

@bestmomo : Oui, je sais, c'est d'ailleurs pour ça que je parle d'utiliser une variable de session : je les manipule déjà pour le panier, donc pas de difficultés à ce sujet. En passant, mille mercis et bravos pour les tutos sur sillo, une vraie mine d'or !

Avatar de DonDiegoAA
DonDiegoAA

Personnellement je n'aurais pas tendance à utiliser une variable en session pour gérer cette problèmatique.

Si je comprends bien, l'utilisateur ne doit pas s'identifier avant d'explorer un univers ou un autre, mais juste faire un choix dans une modal.

L'utilisation d'une session pour stocker ce choix présente plusieurs désavantages:

  • Si l'utilisateur garde la page d'un univers ouverte et désire y retourner plus tard, et que sa session est terminée, ca ne fonctionnera plus (ton code le ramènera alors je suppose à l'accueil).
  • On ne pourra pas sauvegarder/partager une page interne à l'univers
  • Au niveau SEO, Google n'aura pas accès aux pages liées aux univers, donc elle ne seront pas référencées
  • ... j'en oublie sûrement

Pourquoi ne pas mettre le choix de l'univers dans l'url de tes pages. Par exemple;

Rien ne t'empêche d'utiliser les mêmes contrôleurs derrières, si la logique est identique entre les univers, hormis les prix à afficher.

Tu aurais par exemple au niveau des routes:

Route::get('/{univers}/page1', 'PageController@page1');
Route::get('/{univers}/page2', 'PageController@page2');

Et dans ton contrôleur :

class PageController extends Controller
{
    public function page1($univers)
    {
        if($univers == 'particulier') {
        //...
        }elseif($univers == 'pro') {
        //...
        }
    }
}

Vous ne pouvez pas répondre à ce sujet.