Files
ilycats/database/seeders/RoleAndUserSeeder.php
2026-02-08 15:16:35 +07:00

74 lines
2.5 KiB
PHP

<?php
namespace Database\Seeders;
use App\Models\Role;
use App\Models\User;
use App\Models\RolePermission;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\DB;
class RoleAndUserSeeder extends Seeder
{
public function run(): void
{
// 1. Definisikan Modul yang ada di aplikasi ilycats
$modules = [
'cats' => 'Manajemen Kucing',
'matting' => 'Breeding & Matting',
'treatments'=> 'Rekam Medis',
'inventory' => 'Logistik & Stok',
'users' => 'Manajemen User',
'roles' => 'Hak Akses',
'logs' => 'Audit Trail',
'settings' => 'Pengaturan Sistem'
];
DB::transaction(function () use ($modules) {
// 2. Buat Role Admin
$adminRole = Role::updateOrCreate(
['slug' => 'admin'],
['name' => 'Administrator']
);
// Berikan Admin akses FULL ke semua modul
foreach ($modules as $slug => $label) {
RolePermission::updateOrCreate([
'role_id' => $adminRole->id,
'module_slug' => $slug,
], [
'can_read' => 1, 'can_create' => 1, 'can_update' => 1, 'can_delete' => 1
]);
}
// 3. Buat Role Staff
$staffRole = Role::updateOrCreate(
['slug' => 'staff'],
['name' => 'Staff Operasional']
);
// Berikan Staff akses terbatas (Hanya Operasional & Tanpa Delete)
$staffModules = ['cats', 'matting', 'treatments', 'inventory'];
foreach ($staffModules as $slug) {
RolePermission::updateOrCreate([
'role_id' => $staffRole->id,
'module_slug' => $slug,
], [
'can_read' => 1, 'can_create' => 1, 'can_update' => 1, 'can_delete' => 0
]);
}
// 4. Buat User Admin Pertama (Agar bisa login)
User::updateOrCreate(
['email' => 'admin@ilycats.com'],
[
'name' => 'Super Admin',
'password' => Hash::make('password123'), // Silakan ganti nanti
'role_id' => $adminRole->id,
'role' => 'admin', // Menjaga kompatibilitas kode lama Anda
]
);
});
}
}