'create', 'name' => 'Create'], ['slug' => 'read', 'name' => 'Read'], ['slug' => 'update', 'name' => 'Update'], ['slug' => 'delete', 'name' => 'Delete'], ['slug' => 'manage-settings', 'name' => 'Manage Settings'], ['slug' => 'manage-imports', 'name' => 'Manage Imports'], ['slug' => 'manage-document-templates', 'name' => 'Manage Document Templates'], ]); $permissions->each(function ($perm) { Permission::firstOrCreate(['slug' => $perm['slug']], [ 'name' => $perm['name'], 'description' => $perm['name'].' permission', ]); }); $admin = Role::firstOrCreate(['slug' => 'admin'], [ 'name' => 'Administrator', 'description' => 'Full access to all features', ]); $staff = Role::firstOrCreate(['slug' => 'staff'], [ 'name' => 'Staff', 'description' => 'Standard internal user', ]); $viewer = Role::firstOrCreate(['slug' => 'viewer'], [ 'name' => 'Viewer', 'description' => 'Read-only access', ]); // Attach permissions $admin->permissions()->sync(Permission::pluck('id')); $staff->permissions()->sync(Permission::whereIn('slug', ['create', 'read', 'update'])->pluck('id')); $viewer->permissions()->sync(Permission::where('slug', 'read')->pluck('id')); // Optionally ensure first user is admin $firstUser = User::query()->orderBy('id')->first(); if ($firstUser && ! $firstUser->roles()->where('roles.id', $admin->id)->exists()) { $firstUser->roles()->attach($admin->id); } } }