From 449aa63f85c953e97f561cfc7f3bd4d1b3017120 Mon Sep 17 00:00:00 2001 From: wangdan-fit2cloud Date: Tue, 17 Jun 2025 20:35:24 +0800 Subject: [PATCH] feat: permission --- ui/src/api/knowledge/knowledge.ts | 6 +++--- ui/src/api/shared/knowledge.ts | 8 ++++---- ui/src/layout/layout-header/UserHeader.vue | 2 ++ ui/src/router/modules/2knowledge.ts | 2 +- ui/src/router/modules/application-detail.ts | 9 +++++---- ui/src/router/modules/document.ts | 6 ++++-- ui/src/views/document/UploadDocument.vue | 7 ++++--- ui/src/views/document/index.vue | 4 ++-- ui/src/views/hit-test/index.vue | 2 +- ui/src/views/login/index.vue | 6 +++++- ui/src/views/model/component/ModelCard.vue | 2 -- ui/src/views/model/index.vue | 1 - ui/src/views/shared/hit-test-shared/index.vue | 2 +- ui/vite.config.ts | 2 +- 14 files changed, 33 insertions(+), 26 deletions(-) diff --git a/ui/src/api/knowledge/knowledge.ts b/ui/src/api/knowledge/knowledge.ts index 4cc399cf0..19b1c84d3 100644 --- a/ui/src/api/knowledge/knowledge.ts +++ b/ui/src/api/knowledge/knowledge.ts @@ -158,12 +158,12 @@ const putGenerateRelated: ( * @query { query_text: string, top_number: number, similarity: number } * @returns */ -const getKnowledgeHitTest: ( +const putKnowledgeHitTest: ( knowledge_id: string, data: any, loading?: Ref, ) => Promise>> = (knowledge_id, data, loading) => { - return get(`${prefix.value}/${knowledge_id}/hit_test`, data, loading) + return put(`${prefix.value}/${knowledge_id}/hit_test`, undefined, data, loading) } /** @@ -265,7 +265,7 @@ export default { exportKnowledge, exportZipKnowledge, putGenerateRelated, - getKnowledgeHitTest, + putKnowledgeHitTest, putSyncWebKnowledge, postKnowledge, getKnowledgeModel, diff --git a/ui/src/api/shared/knowledge.ts b/ui/src/api/shared/knowledge.ts index a7949f898..5c7dc21fa 100644 --- a/ui/src/api/shared/knowledge.ts +++ b/ui/src/api/shared/knowledge.ts @@ -143,7 +143,6 @@ const putGenerateRelated: ( ) => Promise>> = (knowledge_id, data, loading) => { return put(`${prefix}/${knowledge_id}/generate_related`, data, null, loading) } - /** * 命中测试列表 * @param knowledge_id @@ -151,14 +150,15 @@ const putGenerateRelated: ( * @query { query_text: string, top_number: number, similarity: number } * @returns */ -const getKnowledgeHitTest: ( +const putKnowledgeHitTest: ( knowledge_id: string, data: any, loading?: Ref, ) => Promise>> = (knowledge_id, data, loading) => { - return get(`${prefix}/${knowledge_id}/hit_test`, data, loading) + return put(`${prefix}/${knowledge_id}/hit_test`, undefined, data, loading) } + /** * 同步知识库 * @param 参数 knowledge_id @@ -260,7 +260,7 @@ export default { exportKnowledge, exportZipKnowledge, putGenerateRelated, - getKnowledgeHitTest, + putKnowledgeHitTest, putSyncWebKnowledge, postKnowledge, getKnowledgeModel, diff --git a/ui/src/layout/layout-header/UserHeader.vue b/ui/src/layout/layout-header/UserHeader.vue index fe4e11c07..521cf46cf 100644 --- a/ui/src/layout/layout-header/UserHeader.vue +++ b/ui/src/layout/layout-header/UserHeader.vue @@ -4,11 +4,13 @@ + +
diff --git a/ui/src/router/modules/2knowledge.ts b/ui/src/router/modules/2knowledge.ts index c03bb79df..3fc6b1a1b 100644 --- a/ui/src/router/modules/2knowledge.ts +++ b/ui/src/router/modules/2knowledge.ts @@ -14,7 +14,7 @@ const ModelRouter = { // 上传文档 { - path: '/knowledge/document/upload', + path: '/knowledge/document/upload/:folderId', name: 'UploadDocument', meta: { activeMenu: '/knowledge' }, component: () => import('@/views/document/UploadDocument.vue'), diff --git a/ui/src/router/modules/application-detail.ts b/ui/src/router/modules/application-detail.ts index b302175aa..16b876134 100644 --- a/ui/src/router/modules/application-detail.ts +++ b/ui/src/router/modules/application-detail.ts @@ -1,6 +1,6 @@ import { ChatUserResourceEnum } from '@/enums/workspaceChatUser' -import { PermissionConst, RoleConst } from '@/utils/permission/data' +import { PermissionConst, EditionConst, RoleConst } from '@/utils/permission/data' const ApplicationDetailRouter = { path: '/application/:id/:type', @@ -49,7 +49,7 @@ const ApplicationDetailRouter = { active: 'access', parentPath: '/application/:id/:type', parentName: 'ApplicationDetail', - // permission: new ComplexPermission([], ['x-pack'], 'OR'), + permission: [EditionConst.IS_PE, EditionConst.IS_EE], }, component: () => import('@/views/application/ApplicationAccess.vue'), }, @@ -75,9 +75,10 @@ const ApplicationDetailRouter = { active: 'chat-log', parentPath: '/application/:id/:type', parentName: 'ApplicationDetail', - resourceType: ChatUserResourceEnum.APPLICATION + resourceType: ChatUserResourceEnum.APPLICATION, + permission: [EditionConst.IS_PE, EditionConst.IS_EE], }, - component: () => import('@/views/chat-user/index.vue') + component: () => import('@/views/chat-user/index.vue'), }, { path: 'chat-log', diff --git a/ui/src/router/modules/document.ts b/ui/src/router/modules/document.ts index 56499dd15..bdd4f7b74 100644 --- a/ui/src/router/modules/document.ts +++ b/ui/src/router/modules/document.ts @@ -1,5 +1,6 @@ import { ChatUserResourceEnum } from '@/enums/workspaceChatUser' +import { PermissionConst, EditionConst, RoleConst } from '@/utils/permission/data' const DocumentRouter = { path: '/knowledge/:id/:folderId', name: 'KnowledgeDetail', @@ -55,9 +56,10 @@ const DocumentRouter = { active: 'chat-log', parentPath: '/knowledge/:id/:folderId', parentName: 'KnowledgeDetail', - resourceType: ChatUserResourceEnum.KNOWLEDGE + resourceType: ChatUserResourceEnum.KNOWLEDGE, + permission: [EditionConst.IS_PE, EditionConst.IS_EE], }, - component: () => import('@/views/chat-user/index.vue') + component: () => import('@/views/chat-user/index.vue'), }, { path: 'setting', diff --git a/ui/src/views/document/UploadDocument.vue b/ui/src/views/document/UploadDocument.vue index 537fc95ca..b6f0773b5 100644 --- a/ui/src/views/document/UploadDocument.vue +++ b/ui/src/views/document/UploadDocument.vue @@ -71,6 +71,7 @@ const documentsType = computed(() => knowledge.documentsType) const router = useRouter() const route = useRoute() const { + params: { folderId }, query: { id }, // id为knowledgeID,有id的是上传文档 } = route @@ -96,7 +97,7 @@ async function next() { documentApi.postQADocument(id as string, fd, loading).then((res) => { MsgSuccess(t('common.submitSuccess')) clearStore() - router.push({ path: `/knowledge/${id}/document` }) + router.push({ path: `/knowledge/${id}/${folderId}/document` }) }) } } else if (documentsType.value === 'table') { @@ -111,7 +112,7 @@ async function next() { documentApi.postTableDocument(id as string, fd, loading).then((res) => { MsgSuccess(t('common.submitSuccess')) clearStore() - router.push({ path: `/knowledge/${id}/document` }) + router.push({ path: `/knowledge/${id}/${folderId}/document` }) }) } } else { @@ -151,7 +152,7 @@ function submit() { .then(() => { MsgSuccess(t('common.submitSuccess')) clearStore() - router.push({ path: `/knowledge/${id}/document` }) + router.push({ path: `/knowledge/${id}/${folderId}/document` }) }) .catch(() => { loading.value = false diff --git a/ui/src/views/document/index.vue b/ui/src/views/document/index.vue index 8814ff0e5..b7605c70b 100644 --- a/ui/src/views/document/index.vue +++ b/ui/src/views/document/index.vue @@ -9,7 +9,7 @@ {{ $t('views.document.uploadDocument') }} @@ -526,7 +526,7 @@
- {{ $t('views.document.setting.cancelVectorization') }} diff --git a/ui/src/views/hit-test/index.vue b/ui/src/views/hit-test/index.vue index b9aec27d6..d5ab0153f 100644 --- a/ui/src/views/hit-test/index.vue +++ b/ui/src/views/hit-test/index.vue @@ -312,7 +312,7 @@ function getHitTestList() { ...formInline.value, } if (isDataset.value) { - KnowledgeApi.getKnowledgeHitTest(id, obj, loading).then((res) => { + KnowledgeApi.putKnowledgeHitTest(id, obj, loading).then((res) => { paragraphDetail.value = res.data && arraySort(res.data, 'comprehensive_score', true) questionTitle.value = inputValue.value inputValue.value = '' diff --git a/ui/src/views/login/index.vue b/ui/src/views/login/index.vue index 89fccc39f..cd5447bdc 100644 --- a/ui/src/views/login/index.vue +++ b/ui/src/views/login/index.vue @@ -140,6 +140,9 @@ import QrCodeTab from '@/views/login/scanCompinents/QrCodeTab.vue' import { MsgConfirm, MsgError } from '@/utils/message.ts' import * as dd from 'dingtalk-jsapi' import { loadScript } from '@/utils/utils' +import { EditionConst } from '@/utils/permission/data' +import { hasPermission } from '@/utils/permission/index' + const router = useRouter() const { login, user, theme } = useStore() const { locale } = useI18n({ useScope: 'global' }) @@ -296,7 +299,8 @@ function changeMode(val: string) { onBeforeMount(() => { loading.value = true user.asyncGetProfile().then((res) => { - if (user.isEnterprise()) { + // 企业版和专业版:第三方登录 + if (hasPermission([EditionConst.IS_EE, EditionConst.IS_PE], 'OR')) { login .getAuthType() .then((res) => { diff --git a/ui/src/views/model/component/ModelCard.vue b/ui/src/views/model/component/ModelCard.vue index 1c4f7b0dc..7d3bb9654 100644 --- a/ui/src/views/model/component/ModelCard.vue +++ b/ui/src/views/model/component/ModelCard.vue @@ -128,8 +128,6 @@ import useStore from '@/stores' import ParamSettingDialog from './ParamSettingDialog.vue' import {t} from '@/locales' import { PermissionConst, EditionConst, RoleConst } from '@/utils/permission/data' -import { hasPermission } from '@/utils/permission/index' -import { ComplexPermission } from '@/utils/permission/type' const props = defineProps<{ model: Model diff --git a/ui/src/views/model/index.vue b/ui/src/views/model/index.vue index dcdf65d45..ab2742b95 100644 --- a/ui/src/views/model/index.vue +++ b/ui/src/views/model/index.vue @@ -119,7 +119,6 @@ import SelectProviderDialog from '@/views/model/component/SelectProviderDialog.v import useStore from '@/stores' import { t } from '@/locales' import { PermissionConst, RoleConst } from '@/utils/permission/data' -import { hasPermission } from '@/utils/permission/index' const { model } = useStore() diff --git a/ui/src/views/shared/hit-test-shared/index.vue b/ui/src/views/shared/hit-test-shared/index.vue index efe4804f0..4cd64432b 100644 --- a/ui/src/views/shared/hit-test-shared/index.vue +++ b/ui/src/views/shared/hit-test-shared/index.vue @@ -312,7 +312,7 @@ function getHitTestList() { ...formInline.value, } if (isDataset.value) { - KnowledgeApi.getKnowledgeHitTest(id, obj, loading).then((res) => { + KnowledgeApi.putKnowledgeHitTest(id, obj, loading).then((res) => { paragraphDetail.value = res.data && arraySort(res.data, 'comprehensive_score', true) questionTitle.value = inputValue.value inputValue.value = '' diff --git a/ui/vite.config.ts b/ui/vite.config.ts index f49590a47..08f5c370c 100644 --- a/ui/vite.config.ts +++ b/ui/vite.config.ts @@ -17,7 +17,7 @@ export default defineConfig(({ mode }) => { const prefix = process.env.VITE_DYNAMIC_PREFIX || ENV.VITE_BASE_PATH const proxyConf: Record = {} proxyConf['/api'] = { - target: 'http://43.166.1.146:8080', + target: 'http://127.0.0.1:8080', changeOrigin: true, rewrite: (path: string) => path.replace(ENV.VITE_BASE_PATH, '/'), }