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

@@ -49,7 +49,7 @@
v-for="(sectionItem, sectionItemKey) in section"
:key="sectionItemKey"
:integration="sectionItem"
@select="openIntegrationModal"
@select="openIntegration"
/>
</div>
</div>
@@ -107,11 +107,22 @@ onMounted(() => {
oAuthProvidersStore.fetchOAuthProviders(props.form.workspace_id)
})
const openIntegrationModal = (itemKey) => {
if (!itemKey || !integrations.value.has(itemKey))
const openIntegration = (itemKey) => {
if (!itemKey || !integrations.value.has(itemKey)) {
return alert.error("Integration not found")
if (integrations.value.get(itemKey).coming_soon)
}
const integration = integrations.value.get(itemKey)
if (integration.coming_soon) {
return alert.warning("This integration is not available yet")
}
if(integration.is_external && integration.url) {
window.open(integration.url, '_blank')
return
}
selectedIntegrationKey.value = itemKey
selectedIntegration.value = integrations.value.get(
selectedIntegrationKey.value,