/
wax_boy
/
semaphore_custom
Обзор
Документация
Войти
/
wax_boy
/
semaphore_custom
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
web/src/views/project/IntegrationExtractor.vue
127 строк
3 KB
Denis Gukov
fix(integrations): permissions
12 мар 2026, 18:22
Не верифицирован
12 мар 2026, 18:22
1a419b9
Код
Авторство
О чём код?
<template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform"> <div v-if="integration != null"> <IntegrationExtractorCrumb :integration="integration" :integration-id="integrationId" :project-id="projectId" /> <div class="px-4 pt-3 pb-2"> <v-switch v-if="can(USER_PERMISSIONS.manageProjectResources)" class="mt-0" v-model="integration.searchable" :label="$t('globalAlias')" @change="updateIntegration()" /> </div> <div v-if="integration.searchable" class="px-4"> <v-alert type="info" text class="d-inline-block"> Matchers allow the integration to be found by a project alias. </v-alert> </div> <div v-else class="px-4 pb-6"> <div class="mb-3 pl-1" v-if="(aliases || []).length === 0">There is no aliases.</div> <div v-else v-for="alias of aliases || []" :key="alias.id"> <code class="mr-2">{{ alias.url }}</code> <CopyClipboardButton :text="alias.url" success-message="The alias URL has been copied to the clipboard." /> <v-btn icon @click="deleteAlias(alias.id)" v-if="can(USER_PERMISSIONS.manageProjectResources)" > <v-icon>mdi-delete</v-icon> </v-btn> </div> <v-btn color="primary" @click="addAlias()" :disabled="aliases == null" v-if="can(USER_PERMISSIONS.manageProjectResources)" > {{ aliases == null ? $t('LoadAlias') : $t('AddAlias') }} </v-btn> </div> <v-divider /> <IntegrationMatcher class="mb-6" v-if="integration.searchable" :is-admin="isAdmin" :userPermissions="userPermissions" :project-id="projectId" /> <IntegrationExtractValue :is-admin="isAdmin" :userPermissions="userPermissions" :project-id="projectId" /> </div> </template> <script> import IntegrationsBase from '@/views/project/IntegrationsBase'; import axios from 'axios'; import { USER_PERMISSIONS } from '@/lib/constants'; import CopyClipboardButton from '@/components/CopyClipboardButton.vue'; import PermissionsCheck from '@/components/PermissionsCheck'; import IntegrationExtractValue from './IntegrationExtractValue.vue'; import IntegrationMatcher from './IntegrationMatcher.vue'; import IntegrationExtractorCrumb from './IntegrationExtractorCrumb.vue'; export default { mixins: [IntegrationsBase, PermissionsCheck], components: { CopyClipboardButton, IntegrationMatcher, IntegrationExtractValue, IntegrationExtractorCrumb, }, props: { projectId: Number, }, data() { return { integration: null, USER_PERMISSIONS, }; }, async created() { this.integration = ( await axios({ method: 'get', url: `/api/project/${this.projectId}/integrations/${this.integrationId}`, responseType: 'json', }) ).data; }, methods: { allowActions() { return true; }, async updateIntegration() { await axios({ method: 'put', url: `/api/project/${this.projectId}/integrations/${this.integrationId}`, responseType: 'json', data: this.integration, }); }, }, }; </script>