Laravel 10 : Créer des rôles et des permissions

Introduction

Dans cette application Laravel 10, nous avons déjà mis en place une API REST fonctionnelle avec des utilisateurs.

Laravel 10 : Créer une API REST

Laravel 10 : Inscription et connexion sécurisées

Cependant, pour garantir la sécurité et le contrôle d’accès à notre API, il est crucial de mettre en place un système de gestion des rôles et des permissions.

Ce tutoriel vous guidera pas à pas dans l’implémentation d’un tel système en utilisant le package spatie/laravel-permission.

Objectifs:

  • Créer des modèles Role et Permission.
  • Définir les relations entre les modèles UserRole et Permission.
  • Créer des rôles et des permissions.
  • Attribuer des rôles aux utilisateurs.
  • Vérifier les permissions des utilisateurs.
  • Utiliser les rôles et les permissions dans les contrôleurs de l’API.

Prérequis:

  • Avoir une API REST Laravel 10 fonctionnelle avec des utilisateurs (voir nos anciens tutoriels).
  • Comprendre les concepts de base des rôles et des permissions.

Installation de Spatie

Installation du package


Copier

Publier les migrations et les fichiers de configuration



Copier

Exécuter les migrations




Copier

Configuration

Après avoir migré, les tables nécessaires pour gérer les rôles et les permissions seront créées. Vous pouvez maintenant ajouter le Trait HasRoles dans votre modèle User. Ouvrez le fichier app/Models/User.php et modifiez-le comme suit :

Copier

Cette modification permet à vos utilisateurs d’avoir des rôles et des permissions

Création de Rôles et Permissions

Exécutez la commande suivante dans votre terminal pour créer un seeder :

Copier

Cette commande va peupler votre base de données avec les rôles et permissions spécifiés dans le seeder. Veillez à ce que le package spatie/laravel-permission soit correctement installé et configuré, et que vous ayez exécuté les migrations nécessaires au préalable.

Ainsi, vous aurez établi un système de gestion des rôles et permissions pour votre application Laravel, en utilisant le pattern Seeder pour une initialisation efficace et organisée.

Voici un exemple de seeder pour créer des rôles et des permissions.

Copier

N’oubliez pas d’exécuter le seeder après l’avoir créé :

Copier

Configuration des Middleware de Permissions

Suivez ces étapes pour enregistrer les middleware :

  1. Ouvrez le fichier app/Http/Kernel.php
  2. Localisez la propriété $middlewareAliases (dans Laravel 10 et plus) ou $routeMiddleware (dans Laravel 9 et moins). Cela dépend de la version de Laravel que vous utilisez.
  3. Ajoutez les entrées suivantes pour enregistrer les middleware de Spatie :
Copier

Mise à jour du UserController

Pour permettre aux utilisateurs de voir et de mettre à jour leur propre profil, nous allons ajouter deux méthodes dans UserController :

Copier

Mise à jour des Routes API

Ensuite, nous devons définir les routes dans le fichier routes/api.php pour utiliser ces méthodes du contrôleur et appliquer les permissions appropriées avec les middleware :

Copier

En ajoutant ces méthodes et en mettant à jour les routes, nous avons établi des contrôles d’accès pour assurer que les utilisateurs peuvent seulement accéder et modifier leur propre profil, tandis que les administrateurs et les super administrateurs ont des droits d’accès étendus pour gérer d’autres utilisateurs. Veillez à tester les routes et méthodes pour vous assurer qu’elles fonctionnent comme attendu.

Conclusion

Pour conclure, nous avons maintenant une application Laravel 10 avec un système de gestion des rôles et des permissions robuste en place. Nous avons mis à jour le UserController pour permettre aux utilisateurs de voir et d’éditer leur propre profil, tout en restreignant certaines actions administratives aux rôles ‘admin’ et ‘super admin’. Les routes sont sécurisées avec le middleware approprié, assurant ainsi que chaque utilisateur a uniquement accès aux fonctionnalités qui correspondent à ses permissions.

Pour aller plus loin et continuer à améliorer votre infrastructure de développement, je vous invite à explorer notre tutoriel sur la création d’une image Docker personnalisée pour Laravel. Docker offre un environnement de développement cohérent et facilite le déploiement de votre application Laravel. Notre autre tutoriel Créer son Image Laravel avec Docker, vous guidera à travers les étapes pour conteneuriser votre application Laravel, ce qui rendra le déploiement sur n’importe quel serveur ou plateforme cloud un jeu d’enfant.

Avec ces compétences en main, vous êtes bien équipé pour construire, déployer et gérer des applications Laravel sécurisées et efficaces.

Envie d’en savoir plus sur le développement d’applications web ,sur le dev/ops ou la conception d’applications inscrivez-vous à notre formation Développeur web et web mobile ou Concepteur Développeur d’Application (CDA) afin de viser l’excellence, acquérir un savoir-faire concret dans le développement web et d’obtenir un diplôme national RNCP reconnus par l’État.