From e274d41f19fd14d7f50f6d0363cab165b6862f29 Mon Sep 17 00:00:00 2001 From: theRADcozaDEV Date: Wed, 11 Mar 2026 07:18:12 +0200 Subject: [PATCH] Fix seeder to actually create admin user Two issues fixed: 1. Changed create() to firstOrCreate() - makes seeder idempotent (can run multiple times without 'already exists' errors) 2. Seeder now CREATES admin user instead of just assigning role to existing user. Previous code assumed user existed. Admin credentials: - Email: admin@example.com - Password: password --- src/database/seeders/RolePermissionSeeder.php | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/database/seeders/RolePermissionSeeder.php b/src/database/seeders/RolePermissionSeeder.php index 951e70b..b509cbb 100644 --- a/src/database/seeders/RolePermissionSeeder.php +++ b/src/database/seeders/RolePermissionSeeder.php @@ -22,21 +22,27 @@ public function run(): void ]; foreach ($permissions as $permission) { - Permission::create(['name' => $permission]); + Permission::firstOrCreate(['name' => $permission]); } - $adminRole = Role::create(['name' => 'admin']); + $adminRole = Role::firstOrCreate(['name' => 'admin']); $adminRole->givePermissionTo(Permission::all()); - $editorRole = Role::create(['name' => 'editor']); + $editorRole = Role::firstOrCreate(['name' => 'editor']); $editorRole->givePermissionTo(['users.view', 'users.edit']); - $viewerRole = Role::create(['name' => 'viewer']); + $viewerRole = Role::firstOrCreate(['name' => 'viewer']); $viewerRole->givePermissionTo(['users.view']); - $admin = User::where('email', 'admin@example.com')->first(); - if ($admin) { - $admin->assignRole('admin'); - } + // Create admin user if not exists + $admin = User::firstOrCreate( + ['email' => 'admin@example.com'], + [ + 'name' => 'Admin', + 'password' => bcrypt('password'), + 'email_verified_at' => now(), + ] + ); + $admin->assignRole('admin'); } }