diff --git a/ui/src/components/business/folder-tree/index.vue b/ui/src/components/business/folder-tree/index.vue index c9aab85c052..de2f4c35734 100644 --- a/ui/src/components/business/folder-tree/index.vue +++ b/ui/src/components/business/folder-tree/index.vue @@ -11,6 +11,19 @@ import VirtualizedTree from './VirtualizedTree.vue' import FolderFormDialog from './FolderFormDialog.vue' import ResourceAuthorizationDrawer from '@/components/business/resource-authorization-drawer/index.vue' import { useStore } from '@/stores' +import { perm } from '@/permission' +import { RESOURCE_TYPE } from '@/api/enums' + +const folderPermission = computed(() => { + switch (props.source) { + case RESOURCE_TYPE.APPLICATION: + return perm.application.workspace + case RESOURCE_TYPE.KNOWLEDGE: + return perm.knowledge.workspace + default: + return perm.tool.workspace + } +}) const MoveToDialog = defineAsyncComponent(() => import('./MoveToDialog.vue')) @@ -416,23 +429,23 @@ defineExpose({ refresh: loadFolders, openCreate: handleOpenCreateFolder }) diff --git a/ui/src/views/application-detail/access/index.vue b/ui/src/views/application-detail/access/index.vue index b75a36f6655..a610dc1963a 100644 --- a/ui/src/views/application-detail/access/index.vue +++ b/ui/src/views/application-detail/access/index.vue @@ -8,6 +8,15 @@ import type { ResourceDetailPageProps } from '@/layout/ResourceDetailLayout.vue' import { MsgSuccess } from '@/utils/message' import AccessSettingDrawer from './AccessSettingDrawer.vue' import { accessPlatforms, type AccessPlatformDefinition } from './platforms' +import { isSystemResource } from '@/utils/resource-context.ts' +import perm from '@/permission/index.ts' + +type ApplicationAccessPermissionMethod = + | 'accessEdit' +function applicationAccessPermission(method: ApplicationAccessPermissionMethod): boolean { + if (isSystemResource()) return Boolean(perm.application.system[method]()) + return Boolean(perm.application.workspace[method](applicationId.value)) +} const { resourceApi } = useApplicationDetailContext() @@ -81,11 +90,11 @@ watch(
- {{ platformStatus[platform.key]?.[0] ? '配置' : '未配置' }} + {{ platformStatus[platform.key]?.[0] ? '配置' : '未配置' }} diff --git a/ui/src/views/application-detail/chat-user/index.vue b/ui/src/views/application-detail/chat-user/index.vue index a968c37c68b..aefe40e0a99 100644 --- a/ui/src/views/application-detail/chat-user/index.vue +++ b/ui/src/views/application-detail/chat-user/index.vue @@ -8,11 +8,20 @@ import { LOGIN_METHOD_LABELS } from '@/constants' import MkSearchList from '@/components/mk-search-list/index.vue' import type { ResourceDetailPageProps } from '@/layout/ResourceDetailLayout.vue' import { MsgSuccess } from '@/utils/message' +import { isSystemResource } from '@/utils/resource-context' +import perm from '@/permission' defineOptions({ name: 'ApplicationChatUserListView' }) defineProps() defineExpose({ hideHeader: true }) +type ApplicationChatUserPermissionMethod = + | 'chatUserEdit' +function applicationchatUserPermission(method: ApplicationChatUserPermissionMethod): boolean{ + if (isSystemResource()) return Boolean(perm.application.system[method]()) + return Boolean(perm.application.workspace[method](applicationId.value)) +} + const { applicationId, resourceApi } = useApplicationDetailContext() const resource = computed(() => ({ resource_id: applicationId.value, @@ -205,13 +214,13 @@ onMounted(() => loadChatUserGroups()) -
+
自动授权
- 保存 + 保存
loadChatUserGroups()) @@ -242,6 +251,7 @@ onMounted(() => loadChatUserGroups()) :model-value="row.is_auth" :disabled="authorizationDisabled" @change="(value: CheckboxValueType) => handleRowChange(value, row)" + v-if="applicationchatUserPermission('chatUserEdit')" /> diff --git a/ui/src/views/application-detail/overview/index.vue b/ui/src/views/application-detail/overview/index.vue index 5807bc6f413..b2d36054804 100644 --- a/ui/src/views/application-detail/overview/index.vue +++ b/ui/src/views/application-detail/overview/index.vue @@ -12,6 +12,8 @@ import ButtonEmbedThirdParty from './embed-third-party/ButtonEmbedThirdParty.vue import ButtonAccessRestriction from './access-restriction/ButtonAccessRestriction.vue' import ButtonDisplaySetting from './display-setting/ButtonDisplaySetting.vue' import ButtonApiKey from './api-key/ButtonApiKey.vue' +import perm from '@/permission/index.ts' +import { isSystemResource } from '@/utils/resource-context.ts' defineOptions({ name: 'ApplicationOverviewView' }) defineProps() @@ -22,6 +24,17 @@ const route = useRoute() const workspaceId = computed(() => String(route.params.workspaceId ?? '')) const { application, applicationId, resourceApi } = useApplicationDetailContext() +type ApplicationOverviewPermissionMethod = + | 'overviewRead' + | 'overviewEmbed' + | 'overviewAccess' + | 'overviewDisplay' + | 'overviewApiKey' +function applicationOverviewPermission(method: ApplicationOverviewPermissionMethod): boolean{ + if (isSystemResource()) return Boolean(perm.application.system[method]()) + return Boolean(perm.application.workspace[method](applicationId.value)) +} + /* 基本信息:Web 访问链接与开关 */ const accessToken = ref('') const webAccessActive = ref(false) @@ -124,11 +137,11 @@ onMounted(() => { 去对话 - + - + - +
@@ -149,7 +162,7 @@ onMounted(() => {
- + diff --git a/ui/src/views/application/index.vue b/ui/src/views/application/index.vue index 6df24cf40d0..b40593fed72 100644 --- a/ui/src/views/application/index.vue +++ b/ui/src/views/application/index.vue @@ -25,6 +25,8 @@ import { } from './application-card/action-dropdown' import ButtonCreateApplication from './components/ButtonCreateApplication.vue' import ButtonTemplateStore from './components/ButtonTemplateStore.vue' +import perm from '@/permission/index.ts' +import { getWorkspaceId } from '@/utils/resource-context.ts' const route = useRoute() const router = useRouter() @@ -192,7 +194,7 @@ function handleBatchDelete() { diff --git a/ui/src/views/system/resource-management/application/index.vue b/ui/src/views/system/resource-management/application/index.vue index 02e4e1f9573..264970d0796 100644 --- a/ui/src/views/system/resource-management/application/index.vue +++ b/ui/src/views/system/resource-management/application/index.vue @@ -17,6 +17,7 @@ import { DeleteApplicationAction, TriggerApplicationAction, } from '@/views/application/application-card/action-dropdown' +import perm from '@/permission' const { auth } = useStore() const router = useRouter() @@ -175,7 +176,7 @@ onMounted(() => { - + @@ -183,18 +184,19 @@ onMounted(() => { - + - + - + { :api="SystemResourceApplicationApi" :application="row" @delete="loadApplicationPage" + v-if="perm.application.system.delete()" />