where('server_id', $this->server->id); } protected function getTableColumns(): array { return [ TextColumn::make('type') ->sortable() ->extraAttributes(['class' => 'uppercase']) ->color(fn (FirewallRule $record) => $record->type === 'allow' ? 'green' : 'red'), TextColumn::make('protocol') ->sortable() ->extraAttributes(['class' => 'uppercase']), TextColumn::make('port') ->sortable(), TextColumn::make('source') ->sortable(), TextColumn::make('mask') ->sortable(), ]; } public function table(Table $table): Table { return $table ->heading(null) ->query($this->getTableQuery()) ->columns($this->getTableColumns()) ->actions([ Action::make('delete') ->icon('heroicon-o-trash') ->tooltip('Delete') ->color('danger') ->hiddenLabel() ->requiresConfirmation() ->authorize(fn (FirewallRule $record) => auth()->user()->can('delete', $record)) ->action(function (FirewallRule $record) { try { app(DeleteRule::class)->delete($this->server, $record); } catch (\Exception $e) { Notification::make() ->danger() ->title($e->getMessage()) ->send(); } $this->dispatch('$refresh'); }), ]); } }