Manage webhooks from the panel
Create one and see its secret once, send a test, change the secret, and read each delivery with what the other end answered. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
44
app/Filament/Resources/Webhooks/Pages/CreateWebhook.php
Normal file
44
app/Filament/Resources/Webhooks/Pages/CreateWebhook.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Filament\Resources\Webhooks\Pages;
|
||||
|
||||
use App\Filament\Resources\Webhooks\WebhookResource;
|
||||
use Filament\Resources\Pages\CreateRecord;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
/**
|
||||
* The secret is made here and shown once, on the page that opens next.
|
||||
*/
|
||||
class CreateWebhook extends CreateRecord
|
||||
{
|
||||
protected static string $resource = WebhookResource::class;
|
||||
|
||||
protected string $secret = '';
|
||||
|
||||
protected function mutateFormDataBeforeCreate(array $data): array
|
||||
{
|
||||
$this->secret = Str::random(40);
|
||||
|
||||
return [...$data, 'secret' => $this->secret];
|
||||
}
|
||||
|
||||
protected function afterCreate(): void
|
||||
{
|
||||
$this->record->forceFill(['created_by' => Auth::id()])->save();
|
||||
|
||||
WebhookResource::showSecret($this->secret);
|
||||
}
|
||||
|
||||
protected function getCreatedNotification(): null
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
protected function getRedirectUrl(): string
|
||||
{
|
||||
return WebhookResource::getUrl('edit', ['record' => $this->record]);
|
||||
}
|
||||
}
|
||||
35
app/Filament/Resources/Webhooks/Pages/EditWebhook.php
Normal file
35
app/Filament/Resources/Webhooks/Pages/EditWebhook.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Filament\Resources\Webhooks\Pages;
|
||||
|
||||
use App\Filament\Resources\Webhooks\WebhookResource;
|
||||
use Filament\Actions\DeleteAction;
|
||||
use Filament\Resources\Pages\EditRecord;
|
||||
|
||||
class EditWebhook extends EditRecord
|
||||
{
|
||||
protected static string $resource = WebhookResource::class;
|
||||
|
||||
protected function getHeaderActions(): array
|
||||
{
|
||||
return [
|
||||
WebhookResource::pingAction(),
|
||||
WebhookResource::rotateAction(),
|
||||
DeleteAction::make(),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Switching it back on starts its failure count again, as through the API.
|
||||
*/
|
||||
protected function mutateFormDataBeforeSave(array $data): array
|
||||
{
|
||||
if (($data['is_active'] ?? false) && ! $this->record->is_active) {
|
||||
$this->record->consecutive_failures = 0;
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
21
app/Filament/Resources/Webhooks/Pages/ListWebhooks.php
Normal file
21
app/Filament/Resources/Webhooks/Pages/ListWebhooks.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Filament\Resources\Webhooks\Pages;
|
||||
|
||||
use App\Filament\Resources\Webhooks\WebhookResource;
|
||||
use Filament\Actions\CreateAction;
|
||||
use Filament\Resources\Pages\ListRecords;
|
||||
|
||||
class ListWebhooks extends ListRecords
|
||||
{
|
||||
protected static string $resource = WebhookResource::class;
|
||||
|
||||
protected function getHeaderActions(): array
|
||||
{
|
||||
return [
|
||||
CreateAction::make(),
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user