feat: inisialisasi project kit v2

This commit is contained in:
2026-05-21 15:57:29 +07:00
commit d4fd478e1f
271 changed files with 35300 additions and 0 deletions
@@ -0,0 +1,50 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
use Spatie\Permission\PermissionRegistrar;
class RolesAndPermissionsSeeder extends Seeder
{
public function run(): void
{
app()[PermissionRegistrar::class]->forgetCachedPermissions();
$permissions = [
'user.view',
'user.create',
'user.edit',
'user.delete',
'role.view',
'role.manage',
'settings.manage',
];
foreach ($permissions as $permission) {
Permission::firstOrCreate(['name' => $permission, 'guard_name' => 'web']);
Permission::firstOrCreate(['name' => $permission, 'guard_name' => 'api']);
}
// user — read-only access
$user = Role::firstOrCreate(['name' => 'user', 'guard_name' => 'web']);
$user->syncPermissions(['user.view']);
// admin — full user & role management, no system settings
$admin = Role::firstOrCreate(['name' => 'admin', 'guard_name' => 'web']);
$admin->syncPermissions([
'user.view',
'user.create',
'user.edit',
'user.delete',
'role.view',
'role.manage',
]);
// super-admin — everything (Gate::before bypasses checks anyway)
$superAdmin = Role::firstOrCreate(['name' => 'super-admin', 'guard_name' => 'web']);
$superAdmin->syncPermissions(Permission::where('guard_name', 'web')->get());
}
}