diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index c4ceb07..2c3e5db 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -25,11 +25,14 @@ class UserFactory extends Factory public function definition(): array { return [ - 'name' => fake()->name(), - 'email' => fake()->unique()->safeEmail(), - 'email_verified_at' => now(), - 'password' => static::$password ??= Hash::make('password'), - 'remember_token' => Str::random(10), + 'name' => fake('id_ID')->name(), + 'email' => fake()->unique()->safeEmail(), + 'email_verified_at' => now(), + 'password' => static::$password ??= Hash::make('password'), + 'remember_token' => Str::random(10), + 'phone' => '08' . fake()->numerify('#########'), + 'address' => 'Desa Karangdadap, Kalibagor, Banyumas', + 'status' => 'aktif', ]; } diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php index d7d5a61..f42172d 100644 --- a/database/seeders/UserSeeder.php +++ b/database/seeders/UserSeeder.php @@ -5,50 +5,29 @@ namespace Database\Seeders; use App\Models\Division; use App\Models\User; use Illuminate\Database\Seeder; -use Spatie\Permission\Models\Role; class UserSeeder extends Seeder { public function run(): void { - $divisions = Division::pluck('id', 'name'); + $divisions = Division::pluck('id')->toArray(); - $users = [ - ['name' => 'Budi Santoso', 'email' => 'ketua@persegi.id', 'role' => 'ketua', 'division' => 'Humas'], - ['name' => 'Siti Rahayu', 'email' => 'bendahara@persegi.id','role' => 'bendahara', 'division' => 'Pendidikan'], - ['name' => 'Ahmad Fauzi', 'email' => 'pengurus@persegi.id', 'role' => 'pengurus', 'division' => 'Olahraga'], - ['name' => 'Dewi Lestari', 'email' => 'auditor@persegi.id', 'role' => 'auditor', 'division' => 'Seni & Budaya'], - ['name' => 'Rizky Pratama', 'email' => 'anggota1@persegi.id', 'role' => 'anggota', 'division' => 'Lingkungan'], - ['name' => 'Nur Hidayah', 'email' => 'anggota2@persegi.id', 'role' => 'anggota', 'division' => 'Humas'], - ]; + // super_admin + User::factory()->createOne([ + 'name' => 'Super Admin', + 'email' => 'admin@admin.com', + 'password' => bcrypt('admin'), + 'phone' => '08123456789', + 'status' => 'aktif', + ])->assignRole('super_admin'); - // super_admin mendapat semua permission via Shield config - $superAdmin = User::firstOrCreate( - ['email' => 'admin@admin.com'], - [ - 'name' => 'Super Admin', - 'password' => bcrypt('admin'), - 'phone' => '08123456789', - 'status' => 'aktif', - ] - ); - - $superAdmin->assignRole('super_admin'); - - foreach ($users as $data) { - $user = User::firstOrCreate( - ['email' => $data['email']], - [ - 'name' => $data['name'], - 'password' => bcrypt('password'), - 'phone' => '08' . rand(100000000, 999999999), - 'address' => 'Desa Karangdadap, Kalibagor, Banyumas', - 'division_id' => $divisions[$data['division']] ?? null, - 'status' => 'aktif', - ] - ); - - $user->syncRoles([$data['role']]); + // 2 user per role + foreach (['ketua', 'bendahara', 'pengurus', 'auditor', 'anggota'] as $role) { + User::factory(2)->create(['division_id' => fake()->randomElement($divisions)]) + ->each(fn ($user) => $user->assignRole($role)); } + + // 2 user tanpa role + User::factory(2)->create(['division_id' => fake()->randomElement($divisions)]); } }