From 15196c79de432b623ccc988f3efa6457a5015d2c Mon Sep 17 00:00:00 2001 From: albert Date: Fri, 8 Nov 2024 02:28:55 +0100 Subject: [PATCH] database seeder refactor --- database/seeders/DatabaseSeeder.php | 64 +++++++++++++++++++---------- 1 file changed, 42 insertions(+), 22 deletions(-) diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index eee6cb7..278d49d 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -3,11 +3,8 @@ namespace Database\Seeders; use App\Models\User; -// use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; - use Spatie\Permission\Models\Role; -use Spatie\Permission\Models\Permission; class DatabaseSeeder extends Seeder { @@ -16,27 +13,50 @@ class DatabaseSeeder extends Seeder */ public function run(): void { - // User::factory(10)->create(); - - // Create roles - $adminRole = Role::create(['name' => 'admin']); - $privilegedRole = Role::create(['name' => 'privileged']); - - // Create permissions - $editPermission = Permission::create(['name' => 'edit articles']); - $deletePermission = Permission::create(['name' => 'delete articles']); - - // Assign permissions to roles - $adminRole->givePermissionTo([$editPermission, $deletePermission]); - $privilegedRole->givePermissionTo($editPermission); - - User::factory()->create([ - 'name' => 'superuser', + // Create roles if they don't already exist + $roles = ['admin', 'privileged']; + + foreach ($roles as $roleName) { + // Check if the role already exists + if (!Role::where('name', $roleName)->exists()) { + Role::create(['name' => $roleName]); + } + } + + // Check if the superuser already exists + $user = User::firstOrCreate([ 'email' => 'superuser@admin.com', - 'password' => '12341234' + 'name' => 'superuser', + 'password' => bcrypt('12341234'), ]); - - $user = User::find(1); // get a user + + // Assign the role to the superuser $user->assignRole('admin'); + + // Create other users as before + $users = [ + ['name' => 'John Doe', 'email' => 'john@doe.com', 'role' => 'privileged'], + ['name' => 'Chuck Norris', 'email' => 'chuck@norris.com'], + ['name' => 'Marios Bros', 'email' => 'mario@bros.com'], + ['name' => 'Ada Lovelace', 'email' => 'ada@lovelace.com'], + ['name' => 'Hulk Hogan', 'email' => 'hulk@hogart.com'], + + ]; + + foreach ($users as $userData) { + $user = User::firstOrCreate([ + 'email' => $userData['email'], + 'name' => $userData['name'], + 'password' => bcrypt('12341234'), + ]); + if (array_key_exists('role', $userData) && $userData['role']) { + $user->assignRole($userData['role']); + } + } } } + + + + +