8
votes

Laravel Access Utilisateur authentifié dans la portée globale

J'ai une application multi-utilisateur avec la relation d'entité / modèle suivante.

utilisateur appartient à une entreprise et a beaucoup supportticket

Les utilisateurs d'une entreprise n'ont pas besoin d'avoir accès au Soutien des billets d'autres sociétés - Si un utilisateur d'une entreprise navigue dans une URL pointant vers un ticket d'assistance d'une autre société, ils devraient recevoir un 404 ou quelque chose d'équivalent.

J'espérais définir une portée globale dans la classe Supportticket comme suit: xxx

Le bénéfice d'une portée globale est qu'il s'appliquera à tous requêtes. D'autres développeurs travaillant sur le projet n'ont pas besoin de fonctionner lors de la récupération des billets car les bons résultats seront toujours retournés.

par exemple supportticket :: Tous () ou supportticket :: Trouver (5) restreindre toujours l'accès par la société de l'utilisateur.

Le défi que j'ai maintenant est que auth () -> utilisateur () retourne toujours null car le middleware authentifié n'a pas encore été exécuté.

  1. Y a-t-il un moyen de contourner cela?
  2. a quelqu'un ici a été confronté à un problème similaire et si oui, comment ils sont-ils allé dessus?
  3. est-il possible d'accéder à l'utilisateur authentifié dans la méthode de démarrage où la portée globale est enregistrée?

    Merci d'avance pour toutes les réponses.


3 commentaires

Vérifiez ce lien ( laravel.com/docs/5.3/upgrade#5.3 -Session in-constructeurs ) Il parle de la manière dont vous pouvez appeler le middleware manuellement à l'intérieur du constructeur du contrôleur, vous pouvez peut-être utiliser cela pour exécuter le middleware manuellement ...


Dupliqué possible de filtres de modèle en fonction de l'utilisateur actuellement authentifié


@Amade merci de m'avoir dirigé. De cette question, j'ai trouvé la solution. Il se lie vers un Portée mondiale sur GitHub qui détaille une solution vraiment belle.


3 Réponses :


1
votes

Vous pouvez vérifier à l'intérieur de la méthode de démarrage s'il y a un utilisateur authentifié à l'aide de \ Auth :: check () avant d'appeler \ Auth :: Utilisateur (). Si le middleware d'authentification est d'emballage des itinéraires ou du contrôleur lui-même, vous pouvez accéder à l'utilisateur authentifié n'importe où à l'aide de la façade \ Auth :: Utilisateur ()


0 commentaires

1
votes

Si vous utilisez le package JWT Auth de Tymon, vous pouvez obtenir un utilisateur authentifiant comme celui-ci

$authUser = \JWTAuth::parseToken()->authenticate();


0 commentaires

2
votes

LARAVEL 5.6.26 Introduit Auth :: Hasuser () Pour déterminer si l'utilisateur actuel est déjà authentifié sans interroger le modèle utilisateur de votre base de données. Vous pouvez trouver plus de détails sur https://laravel-news.com/laravel-5- 6-26

Pour que vous puissiez faire quelque chose comme ceci: xxx


0 commentaires