Bonjour !

Je rencontre un problème. Pour mon site, j'ai 2 type d'utilisateurs. Les utilisateurs et les professionnels. Et pour les professionnels, je veux mettre en place un système de permission assez poussé.

Les utilisateurs étant séparés en 2 tables différentes avec leur propre système d'authentification, etc, ils ont leur propre guard.

Utilisateur --> guard par défault
Pro --> guard "pro"

Du coup, et vu que les permissions n'appartiennent pas à un model bien particulier vu que je les récupère depuis une base de donnée, je définis un gate comme ceci dans le AuthServiceProvider :

public function boot()
    {
        $this->registerPolicies();

        Gate::define('see_chat', function(User $user) {
           return $user->hasPermission('see_chat');
        });
    }

Et quoi que je fasse, rien ne fonctionnait. Je viens de me rendre compte que c'est parce qu'en fait, il définit cette autorisation pour le guard par défaut donc celui des utilisateurs lambda. Je sèche donc complètement... Comment faire pour qu'il se base sur l'utilisateur "professionnel", soit le guard "pro" ?

Je ne sais pas s'il y a quelque chose que j'ai mal compris dans ce système d'autorisation. Je suis encore en pleine phase d'apprentissage du framework.

Je vous remercie de vos réponses.

Amicalement,
Boris

3 réponses


kndeye
Réponse acceptée

Bonjour,

j'ai pas bien saisi ton problème mais ce tutoriel de grafikart pourrait t'aider.

Ranarxhag
Auteur
Réponse acceptée

Salut! Je te remercie de ta réponse !

En fait, j'avais déjà trouvé la solution !

Il suffit de faire :

if (Gate::forUser(Auth::guard('pro')->user())->allows('see_chat')) {
    // Code ici ...
}

C'est ce qui arrive quand je ne lis pas assez correctement la documentation... :)

Amicalement,
Boris

Ok, cool donc il faut mettre le post en résolu.