Beartropy Permissions
Seeding Example
Here's an example seeder to get you started with roles and permissions.
Permission Naming Convention
We recommend using dot notation for permission names to enable automatic grouping in the UI:
| Permission | Group | Description |
|---|---|---|
users.view |
users | View users |
users.create |
users | Create users |
posts.edit |
posts | Edit posts |
settings.view |
settings | View settings |
Example Seeder
Here is a complete seeder example that creates permissions, roles, and assignments:
1<?php 2 3namespace Database\Seeders; 4 5use Illuminate\Database\Seeder; 6use Spatie\Permission\Models\Role; 7use Spatie\Permission\Models\Permission; 8use App\Models\User; 9 10class PermissionsSeeder extends Seeder11{12 public function run(): void13 {14 // Reset cached roles and permissions15 app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();16 17 // Create permissions18 $permissions = [19 'users.view', 'users.create', 'users.edit', 'users.delete',20 'posts.view', 'posts.create', 'posts.edit', 'posts.delete',21 'settings.view', 'settings.edit',22 ];23 24 foreach ($permissions as $permission) {25 Permission::firstOrCreate(['name' => $permission, 'guard_name' => 'web']);26 }27 28 // Create roles29 $admin = Role::firstOrCreate(['name' => 'admin', 'guard_name' => 'web']);30 $editor = Role::firstOrCreate(['name' => 'editor', 'guard_name' => 'web']);31 $viewer = Role::firstOrCreate(['name' => 'viewer', 'guard_name' => 'web']);32 33 // Assign permissions to roles34 $admin->syncPermissions(Permission::all());35 $editor->syncPermissions([36 'users.view', 'posts.view', 'posts.create', 'posts.edit'37 ]);38 $viewer->syncPermissions([39 'users.view', 'posts.view', 'settings.view'40 ]);41 42 // Assign roles to users43 User::first()?->assignRole('admin');44 }45}
Running the Seeder
Run the seeder using Artisan:
1php artisan db:seed --class=PermissionsSeeder
Current version:
0.1.2