BTS SIO2D
  • Accueil
  • Connexion
3 décembre 2024 par Nathan Guche

Gérer les rôles et permissions en Laravel avec Spatie

Gérer les rôles et permissions en Laravel avec Spatie
3 décembre 2024 par Nathan Guche

Table des matières

Toggle
  • 🔐 Gérer les rôles et permissions en Laravel avec Spatie
    • 1️⃣ Installation du package Spatie
    • 2️⃣ Ajouter les rôles et permissions aux utilisateurs
    • 3️⃣ Créer des rôles et permissions
    • 4️⃣ Protéger les routes avec des rôles et permissions
    • 5️⃣ Utilisation dans les vues Blade
    • 6️⃣ Gestion avancée des rôles et permissions
      • 🔄 Retirer un rôle ou une permission
      • 📌 Vérifier plusieurs rôles
      • 📌 Vérifier toutes les permissions
    • 7️⃣ Bonus : Gestion des rôles et permissions dans un panneau admin
    • 🔮 Conclusion : Pourquoi utiliser Spatie pour gérer les rôles ?

🔐 Gérer les rôles et permissions en Laravel avec Spatie

Lorsque tu développes une application Laravel, tu as souvent besoin de gérer les rôles et permissions des utilisateurs. Par exemple :
✅ Un administrateur peut gérer les utilisateurs.
✅ Un éditeur peut modifier des articles.
✅ Un utilisateur ne peut voir que son propre contenu.

Pour gérer cela efficacement, le package Spatie Laravel Permission est la meilleure solution. Il permet de créer des rôles et d’attribuer des permissions facilement.

Dans ce guide, nous allons voir comment installer, configurer et utiliser Spatie pour gérer les rôles et permissions. 🚀


1️⃣ Installation du package Spatie

Tout d’abord, installe le package avec Composer :

bashCopierModifiercomposer require spatie/laravel-permission

Ensuite, publie la configuration et les migrations avec :

bashCopierModifierphp artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"

Cela va générer :

  • Une config config/permission.php
  • Les migrations pour les rôles et permissions

Puis, exécute la migration :

bashCopierModifierphp artisan migrate

✅ Ton application est prête à gérer les rôles et permissions !


2️⃣ Ajouter les rôles et permissions aux utilisateurs

Le package Spatie fonctionne avec Eloquent. Il faut donc ajouter le trait HasRoles à ton modèle User :

📌 Modifie app/Models/User.php :

phpCopierModifieruse Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable
{
    use HasRoles;
}

Cela permet d’utiliser les méthodes pour attribuer des rôles et permissions. 🎯


3️⃣ Créer des rôles et permissions

📌 Créer un rôle et une permission avec Eloquent :

phpCopierModifieruse Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;

$admin = Role::create(['name' => 'admin']);
$editor = Role::create(['name' => 'editor']);

$permission = Permission::create(['name' => 'edit articles']);

📌 Assigner une permission à un rôle :

phpCopierModifier$admin->givePermissionTo('edit articles');

📌 Assigner un rôle à un utilisateur :

phpCopierModifier$user = User::find(1);
$user->assignRole('admin');

📌 Vérifier si un utilisateur a un rôle ou une permission :

phpCopierModifierif ($user->hasRole('admin')) {
    echo "Cet utilisateur est un administrateur";
}

if ($user->can('edit articles')) {
    echo "Cet utilisateur peut modifier des articles";
}

✅ Laravel va gérer les autorisations automatiquement ! 🔥


4️⃣ Protéger les routes avec des rôles et permissions

Tu peux restreindre l’accès aux routes en fonction des rôles et permissions.

📌 Protéger une route avec un middleware :
Dans app/Http/Kernel.php, ajoute :

phpCopierModifierprotected $middlewareAliases = [
    'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
    'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class,
];

📌 Restreindre une route à un rôle spécifique :

phpCopierModifierRoute::get('/admin', function () {
    return "Bienvenue Admin";
})->middleware('role:admin');

📌 Restreindre une route à une permission spécifique :

phpCopierModifierRoute::get('/edit-article', function () {
    return "Page de modification d'article";
})->middleware('permission:edit articles');

✅ Laravel bloquera automatiquement les utilisateurs non autorisés. 🚀


5️⃣ Utilisation dans les vues Blade

Dans tes fichiers Blade, tu peux afficher du contenu selon les rôles et permissions.

📌 Afficher un bouton uniquement pour les admins :

bladeCopierModifier@if(auth()->user()->hasRole('admin'))
    <a href="/admin">Accéder au panneau d’administration</a>
@endif

📌 Afficher du contenu selon une permission :

bladeCopierModifier@can('edit articles')
    <button>Modifier l’article</button>
@endcan

✅ Tu peux personnaliser ton interface selon les autorisations ! 🎨


6️⃣ Gestion avancée des rôles et permissions

🔄 Retirer un rôle ou une permission

📌 Retirer un rôle à un utilisateur :

phpCopierModifier$user->removeRole('admin');

📌 Retirer une permission à un rôle :

phpCopierModifier$role->revokePermissionTo('edit articles');

📌 Vérifier plusieurs rôles

phpCopierModifierif ($user->hasAnyRole(['admin', 'editor'])) {
    echo "Cet utilisateur a un rôle d’administrateur ou d’éditeur";
}

📌 Vérifier toutes les permissions

phpCopierModifierif ($user->hasAllPermissions(['edit articles', 'delete articles'])) {
    echo "Cet utilisateur peut modifier et supprimer des articles";
}

✅ Tu as un contrôle total sur les autorisations ! 🎯


7️⃣ Bonus : Gestion des rôles et permissions dans un panneau admin

Si tu veux gérer les rôles et permissions avec une interface admin, voici quelques options :

📌 Utiliser Laravel Nova :

  • Laravel Nova propose un package pour gérer les rôles avec une interface propre.
  • Documentation : https://nova.laravel.com/

📌 Utiliser Filament Admin :

  • Un tableau de bord Laravel moderne et gratuit.
  • Documentation : https://filamentphp.com/

📌 Créer ton propre CRUD avec Spatie :
Si tu veux une interface 100% personnalisée, tu peux créer un CRUD Laravel classique pour gérer les rôles et permissions.


🔮 Conclusion : Pourquoi utiliser Spatie pour gérer les rôles ?

✅ Facile à installer et utiliser
✅ Système robuste et flexible
✅ Compatible avec Blade, Middleware et API
✅ Extensible pour les applications complexes

👉 Laravel + Spatie = Une gestion des rôles ultra efficace ! 🚀

Article précédentArticles NovembreArticle suivant Angular : Améliorations de performance grâce à l'option isolatedModules

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

About The Blog

Nulla laoreet vestibulum turpis non finibus. Proin interdum a tortor sit amet mollis. Maecenas sollicitudin accumsan enim, ut aliquet risus.

Articles récents

projet flutter Forum28 avril 2025
Backup BDD Bash17 mars 2025
UE – TF1 se met à Unreal Engine ?17 mars 2025

Catégories

  • Article Angular Killian
  • Article Clément
  • Article Unreal Engine Hugo
  • Cybersécurité
  • IA
  • Non classé
  • Projet Flutter KHM
  • Projet Hugo
  • Stage Clément
  • Stage Hugo
  • Stage Killian P
  • TP Clément

Méta

  • Inscription
  • Connexion
  • Flux des publications
  • Flux des commentaires
  • Site de WordPress-FR

Étiquettes

Article Développer son projet professionnel Flutter Gérer son identité professionnelle Java Stage Symfony TP

Why Lander

Lander is a design prepared
especially for the free version
of Rife WordPress Theme.

You can use this for free.
Make your website today.
Get Started Now!

Contact

734 Blackwell Street
Anchorage, Alaska
info@domain.com
+33 (0) 101 0000
+33 (0) 102 0000
Mon. - Fri. 8AM - 6PM

Articles récents

projet flutter Forum28 avril 2025
Backup BDD Bash17 mars 2025
UE – TF1 se met à Unreal Engine ?17 mars 2025
Rife Wordpress Theme. Proudly Built By Apollo13