From a4f2f5492872975a6dc80cab2bcb881d8cb3e84f Mon Sep 17 00:00:00 2001 From: tuxarmy Date: Sat, 4 Apr 2026 11:17:08 +0700 Subject: [PATCH] chore: hapus RolesAndPermissionsSeeder --- database/seeders/PermissionSeeder.php | 28 +++++++------- .../seeders/RolesAndPermissionsSeeder.php | 38 ------------------- 2 files changed, 15 insertions(+), 51 deletions(-) delete mode 100644 database/seeders/RolesAndPermissionsSeeder.php diff --git a/database/seeders/PermissionSeeder.php b/database/seeders/PermissionSeeder.php index fe3abee..7e2dfe5 100644 --- a/database/seeders/PermissionSeeder.php +++ b/database/seeders/PermissionSeeder.php @@ -12,29 +12,33 @@ class PermissionSeeder extends Seeder { app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions(); - $ketua = Role::findByName('ketua'); + // Buat roles jika belum ada + foreach (['super_admin', 'ketua', 'bendahara', 'pengurus', 'anggota', 'auditor'] as $role) { + Role::firstOrCreate(['name' => $role, 'guard_name' => 'web']); + } + + // Skip jika permission belum di-generate (shield:generate belum dijalankan) + if (Permission::count() === 0) { + $this->command->warn('Permission belum ada. Jalankan: php artisan shield:generate --panel=admin'); + return; + } + + $ketua = Role::findByName('ketua'); $bendahara = Role::findByName('bendahara'); - $pengurus = Role::findByName('pengurus'); - $anggota = Role::findByName('anggota'); - $auditor = Role::findByName('auditor'); - $superAdmin = Role::findByName('super_admin'); + $pengurus = Role::findByName('pengurus'); + $anggota = Role::findByName('anggota'); + $auditor = Role::findByName('auditor'); - // Permission khusus di-generate otomatis oleh shield:generate - // via config filament-shield.custom_permissions - - // Ketua: akses penuh kecuali shield roles $ketua->syncPermissions(Permission::where('name', 'not like', '%Role%') ->where('name', 'not like', '%Permission%') ->get()); - // Bendahara: hanya kas + iuran + artikel sendiri $bendahara->syncPermissions(Permission::where('name', 'like', '%CashRecord%') ->orWhere('name', 'like', '%CashCategory%') ->orWhere('name', 'like', '%MemberDue%') ->orWhereIn('name', ['ViewAny:Post', 'View:Post', 'Create:Post', 'Update:Post', 'Delete:Post']) ->get()); - // Pengurus: kegiatan + lihat anggota & divisi + artikel sendiri $pengurus->syncPermissions(Permission::where('name', 'like', '%Activity%') ->orWhereIn('name', [ 'ViewAny:User', 'View:User', @@ -43,7 +47,6 @@ class PermissionSeeder extends Seeder ]) ->get()); - // Anggota: lihat kegiatan & voting + artikel sendiri $anggota->syncPermissions(Permission::whereIn('name', [ 'ViewAny:Activity', 'View:Activity', 'ViewAny:Vote', 'View:Vote', @@ -51,7 +54,6 @@ class PermissionSeeder extends Seeder 'ViewAny:MemberPoint', 'View:MemberPoint', ])->get()); - // Auditor: read-only semua + akses audit $auditor->syncPermissions(Permission::where('name', 'like', 'ViewAny:%') ->orWhere('name', 'like', 'View:%') ->orWhere('name', 'like', '%Audit%') diff --git a/database/seeders/RolesAndPermissionsSeeder.php b/database/seeders/RolesAndPermissionsSeeder.php deleted file mode 100644 index 8ee7592..0000000 --- a/database/seeders/RolesAndPermissionsSeeder.php +++ /dev/null @@ -1,38 +0,0 @@ -forgetCachedPermissions(); - - $roles = ['super_admin', 'ketua', 'bendahara', 'pengurus', 'anggota', 'auditor']; - - foreach ($roles as $role) { - Role::firstOrCreate(['name' => $role, 'guard_name' => 'web']); - } - - // Generate Shield permissions untuk semua resource - \Artisan::call('shield:generate', ['--all' => true, '--panel' => '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'); - } -}