Files
panel-pelican-dev/app/Filament/Admin/Resources/ApiKeys/Pages/CreateApiKey.php

64 lines
1.9 KiB
PHP
Raw Normal View History

2024-04-08 00:59:55 -04:00
<?php
namespace App\Filament\Admin\Resources\ApiKeys\Pages;
2024-04-08 00:59:55 -04:00
2026-01-27 11:36:07 +01:00
use App\Enums\TablerIcon;
use App\Filament\Admin\Resources\ApiKeys\ApiKeyResource;
2024-04-23 19:45:11 -04:00
use App\Models\ApiKey;
use App\Traits\Filament\CanCustomizeHeaderActions;
use App\Traits\Filament\CanCustomizeHeaderWidgets;
use Filament\Actions\Action;
use Filament\Actions\ActionGroup;
2024-04-08 00:59:55 -04:00
use Filament\Resources\Pages\CreateRecord;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;
2024-04-08 00:59:55 -04:00
class CreateApiKey extends CreateRecord
{
use CanCustomizeHeaderActions;
use CanCustomizeHeaderWidgets;
2024-04-08 00:59:55 -04:00
protected static string $resource = ApiKeyResource::class;
2024-04-12 13:05:04 -04:00
protected static bool $canCreateAnother = false;
/** @return array<Action|ActionGroup> */
protected function getDefaultHeaderActions(): array
{
return [
Action::make('create')
->hiddenLabel()
->action('create')
->keyBindings(['mod+s'])
->tooltip(trans('filament-panels::resources/pages/create-record.form.actions.create.label'))
2026-01-27 11:36:07 +01:00
->icon(TablerIcon::FilePlus),
];
}
protected function getFormActions(): array
{
return [];
}
2024-04-23 19:45:11 -04:00
protected function handleRecordCreation(array $data): Model
{
$data['identifier'] = ApiKey::generateTokenIdentifier(ApiKey::TYPE_APPLICATION);
$data['token'] = Str::random(ApiKey::KEY_LENGTH);
2025-10-07 23:12:31 +02:00
$data['user_id'] = user()?->id;
$data['key_type'] = ApiKey::TYPE_APPLICATION;
$permissions = [];
foreach (ApiKey::getPermissionList() as $permission) {
if (isset($data['permissions_' . $permission])) {
$permissions[$permission] = intval($data['permissions_' . $permission]);
unset($data['permissions_' . $permission]);
}
}
$data['permissions'] = $permissions;
return parent::handleRecordCreation($data);
}
2024-04-08 00:59:55 -04:00
}