feat: update UserSeeder pakai Factory
This commit is contained in:
@@ -25,11 +25,14 @@ class UserFactory extends Factory
|
|||||||
public function definition(): array
|
public function definition(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'name' => fake()->name(),
|
'name' => fake('id_ID')->name(),
|
||||||
'email' => fake()->unique()->safeEmail(),
|
'email' => fake()->unique()->safeEmail(),
|
||||||
'email_verified_at' => now(),
|
'email_verified_at' => now(),
|
||||||
'password' => static::$password ??= Hash::make('password'),
|
'password' => static::$password ??= Hash::make('password'),
|
||||||
'remember_token' => Str::random(10),
|
'remember_token' => Str::random(10),
|
||||||
|
'phone' => '08' . fake()->numerify('#########'),
|
||||||
|
'address' => 'Desa Karangdadap, Kalibagor, Banyumas',
|
||||||
|
'status' => 'aktif',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,50 +5,29 @@ namespace Database\Seeders;
|
|||||||
use App\Models\Division;
|
use App\Models\Division;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Illuminate\Database\Seeder;
|
use Illuminate\Database\Seeder;
|
||||||
use Spatie\Permission\Models\Role;
|
|
||||||
|
|
||||||
class UserSeeder extends Seeder
|
class UserSeeder extends Seeder
|
||||||
{
|
{
|
||||||
public function run(): void
|
public function run(): void
|
||||||
{
|
{
|
||||||
$divisions = Division::pluck('id', 'name');
|
$divisions = Division::pluck('id')->toArray();
|
||||||
|
|
||||||
$users = [
|
// super_admin
|
||||||
['name' => 'Budi Santoso', 'email' => 'ketua@persegi.id', 'role' => 'ketua', 'division' => 'Humas'],
|
User::factory()->createOne([
|
||||||
['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 mendapat semua permission via Shield config
|
|
||||||
$superAdmin = User::firstOrCreate(
|
|
||||||
['email' => 'admin@admin.com'],
|
|
||||||
[
|
|
||||||
'name' => 'Super Admin',
|
'name' => 'Super Admin',
|
||||||
|
'email' => 'admin@admin.com',
|
||||||
'password' => bcrypt('admin'),
|
'password' => bcrypt('admin'),
|
||||||
'phone' => '08123456789',
|
'phone' => '08123456789',
|
||||||
'status' => 'aktif',
|
'status' => 'aktif',
|
||||||
]
|
])->assignRole('super_admin');
|
||||||
);
|
|
||||||
|
|
||||||
$superAdmin->assignRole('super_admin');
|
// 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));
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($users as $data) {
|
// 2 user tanpa role
|
||||||
$user = User::firstOrCreate(
|
User::factory(2)->create(['division_id' => fake()->randomElement($divisions)]);
|
||||||
['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']]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user