permissions = collect($data) ->filter(function ($permission, $key) { return !in_array($key, ['name', 'guard_name']); }) ->values() ->flatten() ->unique(); return Arr::only($data, ['name', 'guard_name']); } protected function afterSave(): void { $permissionModels = collect(); $this->permissions->each(function ($permission) use ($permissionModels) { $permissionModels->push(Permission::firstOrCreate([ 'name' => $permission, 'guard_name' => $this->data['guard_name'], ])); }); $this->record->syncPermissions($permissionModels); } protected function getHeaderActions(): array { return [ DeleteAction::make() ->disabled(fn (Role $role) => $role->isRootAdmin() || $role->users_count >= 1) ->label(fn (Role $role) => $role->isRootAdmin() ? trans('admin/role.root_admin_delete') : ($role->users_count >= 1 ? trans('admin/role.in_use') : trans('filament-actions::delete.single.label'))), ]; } }