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() ? 'Can\'t delete Root Admin' : ($role->users_count >= 1 ? 'In Use' : 'Delete')), ]; } }