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
This commit is contained in:
@@ -22,21 +22,27 @@ public function run(): void
|
|||||||
];
|
];
|
||||||
|
|
||||||
foreach ($permissions as $permission) {
|
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());
|
$adminRole->givePermissionTo(Permission::all());
|
||||||
|
|
||||||
$editorRole = Role::create(['name' => 'editor']);
|
$editorRole = Role::firstOrCreate(['name' => 'editor']);
|
||||||
$editorRole->givePermissionTo(['users.view', 'users.edit']);
|
$editorRole->givePermissionTo(['users.view', 'users.edit']);
|
||||||
|
|
||||||
$viewerRole = Role::create(['name' => 'viewer']);
|
$viewerRole = Role::firstOrCreate(['name' => 'viewer']);
|
||||||
$viewerRole->givePermissionTo(['users.view']);
|
$viewerRole->givePermissionTo(['users.view']);
|
||||||
|
|
||||||
$admin = User::where('email', 'admin@example.com')->first();
|
// Create admin user if not exists
|
||||||
if ($admin) {
|
$admin = User::firstOrCreate(
|
||||||
$admin->assignRole('admin');
|
['email' => 'admin@example.com'],
|
||||||
}
|
[
|
||||||
|
'name' => 'Admin',
|
||||||
|
'password' => bcrypt('password'),
|
||||||
|
'email_verified_at' => now(),
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$admin->assignRole('admin');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user