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
etPermission
. - Définir les relations entre les modèles
User
,Role
etPermission
. - 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
Publier les migrations et les fichiers de configuration
Exécuter les migrations
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 :
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 :
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.
N’oubliez pas d’exécuter le seeder après l’avoir créé :
Configuration des Middleware de Permissions
Suivez ces étapes pour enregistrer les middleware :
- Ouvrez le fichier
app/Http/Kernel.php
- 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. - Ajoutez les entrées suivantes pour enregistrer les middleware de Spatie :
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
:
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 :
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.