74 lines
2.5 KiB
PHP
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
|
||
|
|
]
|
||
|
|
);
|
||
|
|
});
|
||
|
|
}
|
||
|
|
}
|