'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 ] ); }); } }