From 8cec7368ab9f7e34bda3949cd3a4719a6294a705 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Fri, 31 May 2024 01:59:33 -0400 Subject: [PATCH 1/3] Only show application api keys --- .../ApiKeyResource/Pages/CreateApiKey.php | 20 +++---------------- .../ApiKeyResource/Pages/ListApiKeys.php | 19 +----------------- 2 files changed, 4 insertions(+), 35 deletions(-) diff --git a/app/Filament/Resources/ApiKeyResource/Pages/CreateApiKey.php b/app/Filament/Resources/ApiKeyResource/Pages/CreateApiKey.php index e8abde957..1922d95cc 100644 --- a/app/Filament/Resources/ApiKeyResource/Pages/CreateApiKey.php +++ b/app/Filament/Resources/ApiKeyResource/Pages/CreateApiKey.php @@ -25,24 +25,10 @@ class CreateApiKey extends CreateRecord ->default(auth()->user()->id) ->required(), - Forms\Components\Select::make('key_type') + Forms\Components\Hidden::make('key_type') ->inlineLabel() - ->options(function (ApiKey $apiKey) { - $originalOptions = [ - //ApiKey::TYPE_NONE => 'None', - ApiKey::TYPE_ACCOUNT => 'Account', - ApiKey::TYPE_APPLICATION => 'Application', - //ApiKey::TYPE_DAEMON_USER => 'Daemon User', - //ApiKey::TYPE_DAEMON_APPLICATION => 'Daemon Application', - ]; - - return collect($originalOptions) - ->filter(fn ($value, $key) => $key <= ApiKey::TYPE_APPLICATION || $apiKey->key_type === $key) - ->all(); - }) - ->selectablePlaceholder(false) - ->required() - ->default(ApiKey::TYPE_APPLICATION), + ->default(ApiKey::TYPE_APPLICATION) + ->required(), Forms\Components\Fieldset::make('Permissions') ->columns([ diff --git a/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php b/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php index 0932848eb..f297f0220 100644 --- a/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php +++ b/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php @@ -19,6 +19,7 @@ class ListApiKeys extends ListRecords { return $table ->searchable(false) + ->modifyQueryUsing(fn ($query) => $query->where('key_type', ApiKey::TYPE_APPLICATION)) ->columns([ Tables\Columns\TextColumn::make('user.username') ->hidden() @@ -64,22 +65,4 @@ class ListApiKeys extends ListRecords Actions\CreateAction::make(), ]; } - - public function getTabs(): array - { - return [ - 'all' => Tab::make('All Keys'), - 'application' => Tab::make('Application Keys') - ->modifyQueryUsing(fn (Builder $query) => $query->where('key_type', ApiKey::TYPE_APPLICATION) - ), - 'account' => Tab::make('Account Keys') - ->modifyQueryUsing(fn (Builder $query) => $query->where('key_type', ApiKey::TYPE_ACCOUNT) - ), - ]; - } - - public function getDefaultActiveTab(): string|int|null - { - return 'application'; - } } From 7d0ce1627b9ff1c90afc5cde6a0a5263373eb35d Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Fri, 31 May 2024 02:00:38 -0400 Subject: [PATCH 2/3] Remove unused imports --- app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php b/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php index f297f0220..b64e0f4f8 100644 --- a/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php +++ b/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php @@ -5,10 +5,8 @@ namespace App\Filament\Resources\ApiKeyResource\Pages; use App\Filament\Resources\ApiKeyResource; use App\Models\ApiKey; use Filament\Actions; -use Filament\Resources\Components\Tab; use Filament\Resources\Pages\ListRecords; use Filament\Tables\Table; -use Illuminate\Database\Eloquent\Builder; use Filament\Tables; class ListApiKeys extends ListRecords From 5081cc3f63b1b4023ac2a01a042ce953ec1af0fb Mon Sep 17 00:00:00 2001 From: notCharles Date: Fri, 31 May 2024 16:39:23 -0400 Subject: [PATCH 3/3] Fix badge, update table --- app/Filament/Resources/ApiKeyResource.php | 18 +----------------- .../ApiKeyResource/Pages/ListApiKeys.php | 14 +++++--------- .../UserResource/Pages/EditProfile.php | 5 +++-- 3 files changed, 9 insertions(+), 28 deletions(-) diff --git a/app/Filament/Resources/ApiKeyResource.php b/app/Filament/Resources/ApiKeyResource.php index b4bea3352..0d7817cd9 100644 --- a/app/Filament/Resources/ApiKeyResource.php +++ b/app/Filament/Resources/ApiKeyResource.php @@ -4,9 +4,7 @@ namespace App\Filament\Resources; use App\Filament\Resources\ApiKeyResource\Pages; use App\Models\ApiKey; -use Filament\Resources\Components\Tab; use Filament\Resources\Resource; -use Illuminate\Database\Eloquent\Builder; class ApiKeyResource extends Resource { @@ -16,7 +14,7 @@ class ApiKeyResource extends Resource public static function getNavigationBadge(): ?string { - return static::getModel()::count() ?: null; + return static::getModel()::where('key_type', '2')->count() ?: null; } public static function canEdit($record): bool @@ -24,20 +22,6 @@ class ApiKeyResource extends Resource return false; } - public function getTabs(): array - { - return [ - 'all' => Tab::make('All Keys'), - 'application' => Tab::make('Application Keys') - ->modifyQueryUsing(fn (Builder $query) => $query->where('key_type', ApiKey::TYPE_APPLICATION)), - ]; - } - - public function getDefaultActiveTab(): string|int|null - { - return 'application'; - } - public static function getRelations(): array { return [ diff --git a/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php b/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php index b64e0f4f8..f55422299 100644 --- a/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php +++ b/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php @@ -19,11 +19,6 @@ class ListApiKeys extends ListRecords ->searchable(false) ->modifyQueryUsing(fn ($query) => $query->where('key_type', ApiKey::TYPE_APPLICATION)) ->columns([ - Tables\Columns\TextColumn::make('user.username') - ->hidden() - ->searchable() - ->sortable(), - Tables\Columns\TextColumn::make('key') ->copyable() ->icon('tabler-clipboard-text') @@ -40,6 +35,7 @@ class ListApiKeys extends ListRecords Tables\Columns\TextColumn::make('last_used_at') ->label('Last Used') + ->placeholder('Not Used') ->dateTime() ->sortable(), @@ -47,13 +43,13 @@ class ListApiKeys extends ListRecords ->label('Created') ->dateTime() ->sortable(), - ]) - ->filters([ - // + + Tables\Columns\TextColumn::make('user.username') + ->label('Created By') + ->url(fn (ApiKey $apiKey): string => route('filament.admin.resources.users.edit', ['record' => $apiKey->user])), ]) ->actions([ Tables\Actions\DeleteAction::make(), - //Tables\Actions\EditAction::make() ]); } diff --git a/app/Filament/Resources/UserResource/Pages/EditProfile.php b/app/Filament/Resources/UserResource/Pages/EditProfile.php index 7fe5728cf..1d86f4f02 100644 --- a/app/Filament/Resources/UserResource/Pages/EditProfile.php +++ b/app/Filament/Resources/UserResource/Pages/EditProfile.php @@ -158,7 +158,7 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile ->schema([ Grid::make('asdf')->columns(5)->schema([ Section::make('Create API Key')->columnSpan(3)->schema([ - TextInput::make('description'), + TextInput::make('description')->required(), TagsInput::make('allowed_ips') ->splitKeys([',', ' ', 'Tab']) ->placeholder('Example: 127.0.0.1 or 192.168.1.1') @@ -182,8 +182,9 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile $action->success(); }), ]), - Section::make('API Keys')->columnSpan(2)->schema([ + Section::make('Keys')->columnSpan(2)->schema([ Repeater::make('keys') + ->label('') ->relationship('apiKeys') ->addable(false) ->itemLabel(fn ($state) => $state['identifier'])