Zapier integration (#491)

* create zapier app

* install sanctum

* move OAuthProviderController

* make `api-external` middleware

* add zapier endpoints

* add tests

* token management

* zapier event handler

* add policy

* use `slug` instead of `id`

* wip

* check policies

* change api prefix to `external`

* ui tweaks

* validate token abilities

* open zapier URL

* zapier ui tweaks

* update zap

* Fix linting

* Added sample endpoints + minor UI changes

* Run PHP code linter

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
This commit is contained in:
Boris Lepikhin
2024-08-12 02:14:02 -07:00
committed by GitHub
parent 7ad62fb3ea
commit 517bccc695
61 changed files with 5799 additions and 51 deletions

View File

@@ -0,0 +1,42 @@
<?php
namespace App\Integrations\Handlers;
use App\Events\Forms\FormSubmitted;
use App\Models\Integration\FormIntegration;
use Exception;
class ZapierIntegration extends AbstractIntegrationHandler
{
public function __construct(
protected FormSubmitted $event,
protected FormIntegration $formIntegration,
protected array $integration
) {
parent::__construct($event, $formIntegration, $integration);
}
public static function getValidationRules(): array
{
return [];
}
public static function isOAuthRequired(): bool
{
return false;
}
protected function getWebhookUrl(): string
{
if (!isset($this->integrationData->hook_url)) {
throw new Exception('The webhook URL is missing');
}
return $this->integrationData->hook_url;
}
protected function shouldRun(): bool
{
return parent::shouldRun() && $this->getWebhookUrl();
}
}