*/ protected $listeners = ['$refresh']; /** * @return Builder */ protected function getTableQuery(): Builder { /** @var User $user */ $user = auth()->user(); /** @var Builder $query */ $query = $user->tokens()->getQuery(); return $query; } protected function getTableColumns(): array { return [ TextColumn::make('name') ->searchable() ->sortable(), TextColumn::make('abilities') ->searchable() ->sortable(), TextColumn::make('created_at') ->label('Created At') ->formatStateUsing(fn (PersonalAccessToken $record) => $record->created_at_by_timezone) ->searchable() ->sortable(), TextColumn::make('last_used_at') ->label('Last Used At') ->formatStateUsing(fn (PersonalAccessToken $record): string => $record->getDateTimeByTimezone($record->last_used_at)) ->searchable() ->sortable(), ]; } public function table(Table $table): Table { /** @var User $user */ $user = auth()->user(); return $table ->heading(null) ->query($this->getTableQuery()) ->columns($this->getTableColumns()) ->actions([ DeleteAction::make('delete') ->modalHeading('Delete Token') ->authorize(fn (PersonalAccessToken $record) => $user->can('delete', $record)) ->using(function (array $data, PersonalAccessToken $record): void { $record->delete(); }), ]) ->bulkActions([ DeleteBulkAction::make() ->requiresConfirmation() ->authorize($user->can('deleteMany', PersonalAccessToken::class)), ]); } }