Skip to content

Instantly share code, notes, and snippets.

@awcodes
Last active June 15, 2023 21:40
Show Gist options
  • Save awcodes/050840536b052a6cd87c1d337773424a to your computer and use it in GitHub Desktop.
Save awcodes/050840536b052a6cd87c1d337773424a to your computer and use it in GitHub Desktop.
Shield Seeders
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Artisan;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
class PermissionSeeder extends Seeder
{
public function run(): void
{
app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();
$superAdmin = Role::create(['name' => 'super_admin']);
$admin = Role::create(['name' => 'admin']);
$editor = Role::create(['name' => 'editor']);
Artisan::call('shield:generate', ['--all' => true]);
$superAdmin->givePermissionTo(Permission::all());
$admin->givePermissionTo(Permission::where('name', 'not like', '%_role')->get());
$editor->givePermissionTo(
Permission::query()
->where('name', 'not like', '%_role')
->where('name', 'not like', '%_user')
->where('name', 'not like', '%_redirect')
->where('name', 'not like', '%_redirect::group')
->where('name', 'not like', '%_redirect404')
->get()
);
}
}
<?php
namespace Database\Seeders;
use App\Models\User;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class UserSeeder extends Seeder
{
use WithoutModelEvents;
/**
* Run the database seeds.
*
* @return void
*/
public function run(): void
{
$users = [
[
'name' => 'Super User',
'email' => 'super@sparks.com',
'roles' => 'super_admin',
],
[
'name' => 'Admin User',
'email' => 'admin@sparks.com',
'roles' => 'admin',
],
[
'name' => 'Editor',
'email' => 'editor@sparks.com',
'roles' => 'editor',
],
];
foreach ($users as $user) {
User::factory()->create([
'name' => $user['name'],
'email' => $user['email'],
])->assignRole($user['roles']);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment