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 !

Posté il y a 6 mois
Avatar de bestmomo
bestmomo

Salut,

Les sessions sont faites pour ça.

Posté il y a 6 mois
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.

Posté il y a 6 mois
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 !

Posté il y a 6 mois
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') {
        //...
        }
    }
}
Posté il y a 5 mois
Avatar de micraux
micraux

Bonjour, et un grand merci à @DonDiegoAA pour tes conseils.

Effectivement, je reviens sur mon idée pour les inconvénients mentionnés, et surtout parce que Google ne peut pas indexer le site.

Je vais donc injecter l'univers dans l'URL comme suggéré.

Cependant, je pense qu'il faut également faire gaffe à ce que Google ne me pénalise pas pour contenu dupliqué car les pages auront 2 urls différentes mais strictement le même contenu (excepté le prix bien entendu).

Donc, j'imagine qu'il y a un petit travail de balise canonique à effectuer (indiquer que les pages .../pro/... sont les mêmes que .../particuliers/...)

Je me penche là-dessus, encore merci !

Posté il y a 1 mois

Vous ne pouvez pas répondre à ce sujet.