Skip to content

Commit a4143ee

Browse files
committed
feat: hit test permission
1 parent 8c0361b commit a4143ee

File tree

6 files changed

+55
-22
lines changed

6 files changed

+55
-22
lines changed

apps/common/constants/permission_constants.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class Group(Enum):
1919
"""
2020
权限组 一个组一般对应前端一个菜单
2121
"""
22+
2223
USER = "USER_MANAGEMENT"
2324
# 应用
2425
APPLICATION = "APPLICATION"
@@ -36,14 +37,16 @@ class Group(Enum):
3637
KNOWLEDGE = "KNOWLEDGE"
3738
SYSTEM_KNOWLEDGE = "SYSTEM_KNOWLEDGE"
3839
SYSTEM_RES_KNOWLEDGE = "SYSTEM_RESOURCE_KNOWLEDGE"
39-
40+
KNOWLEDGE_HIT_TEST = "KNOWLEDGE_HIT_TEST"
4041
KNOWLEDGE_DOCUMENT = "KNOWLEDGE_DOCUMENT"
4142
SYSTEM_KNOWLEDGE_DOCUMENT = "SYSTEM_KNOWLEDGE_DOCUMENT"
4243
SYSTEM_RES_KNOWLEDGE_DOCUMENT = "SYSTEM_RESOURCE_KNOWLEDGE_DOCUMENT"
4344

4445
KNOWLEDGE_PROBLEM = "KNOWLEDGE_PROBLEM"
4546
SYSTEM_KNOWLEDGE_PROBLEM = "SYSTEM_KNOWLEDGE_PROBLEM"
4647
SYSTEM_RES_KNOWLEDGE_PROBLEM = "SYSTEM_RESOURCE_KNOWLEDGE_PROBLEM"
48+
49+
SYSTEM_KNOWLEDGE_HIT_TEST = "SYSTEM_KNOWLEDGE_HIT_TEST"
4750
SYSTEM_KNOWLEDGE_CHAT_USER = "SYSTEM_KNOWLEDGE_CHAT_USER"
4851

4952
MODEL = "MODEL"
@@ -158,7 +161,6 @@ class Operate(Enum):
158161
SETTING = "READ+SETTING" # 管理
159162
DOWNLOAD = "READ+DOWNLOAD" # 下载
160163

161-
162164
class RoleGroup(Enum):
163165
# 系统用户
164166
SYSTEM_USER = "SYSTEM_USER"
@@ -298,6 +300,7 @@ def get_workspace_role(self):
298300
Group.KNOWLEDGE.value: _("Knowledge"),
299301
Group.KNOWLEDGE_DOCUMENT.value: _("Document"),
300302
Group.KNOWLEDGE_PROBLEM.value: _("Problem"),
303+
Group.KNOWLEDGE_HIT_TEST.value: _("Hit-Test"),
301304
Operate.IMPORT.value: _("Import"),
302305
Operate.EXPORT.value: _("Export"),
303306
Operate.DEBUG.value: _("Debug"),
@@ -340,6 +343,7 @@ def get_workspace_role(self):
340343
Group.SYSTEM_KNOWLEDGE.value: _("Knowledge"),
341344
Group.SYSTEM_KNOWLEDGE_DOCUMENT.value: _("Document"),
342345
Group.SYSTEM_KNOWLEDGE_PROBLEM.value: _("Problem"),
346+
Group.SYSTEM_KNOWLEDGE_HIT_TEST.value: _("Hit-test"),
343347
Group.SYSTEM_KNOWLEDGE_CHAT_USER.value: _("Dialogue users"),
344348
Group.SYSTEM_RES_TOOL.value: _("Tool"),
345349
Group.SYSTEM_RES_MODEL.value: _("Model"),
@@ -579,7 +583,12 @@ class PermissionConstants(Enum):
579583
resource_permission_group_list=[ResourcePermissionConst.KNOWLEDGE_MANGE],
580584
parent_group=[WorkspaceGroup.KNOWLEDGE, UserGroup.KNOWLEDGE]
581585
)
582-
586+
KNOWLEDGE_HIT_TEST = Permission(
587+
group=Group.KNOWLEDGE_HIT_TEST, operate=Operate.READ,
588+
role_list=[RoleConstants.ADMIN, RoleConstants.USER],
589+
resource_permission_group_list=[ResourcePermissionConst.KNOWLEDGE_VIEW],
590+
parent_group=[WorkspaceGroup.KNOWLEDGE, UserGroup.KNOWLEDGE]
591+
)
583592
KNOWLEDGE_PROBLEM_READ = Permission(
584593
group=Group.KNOWLEDGE_PROBLEM, operate=Operate.READ,
585594
role_list=[RoleConstants.ADMIN, RoleConstants.USER],
@@ -1146,6 +1155,10 @@ class PermissionConstants(Enum):
11461155
group=Group.SYSTEM_KNOWLEDGE_PROBLEM, operate=Operate.DELETE, role_list=[RoleConstants.ADMIN],
11471156
parent_group=[SystemGroup.SHARED_KNOWLEDGE]
11481157
)
1158+
SHARED_KNOWLEDGE_HIT_TEST = Permission(
1159+
group=Group.SYSTEM_KNOWLEDGE_HIT_TEST, operate=Operate.READ, role_list=[RoleConstants.ADMIN],
1160+
parent_group=[SystemGroup.SHARED_KNOWLEDGE]
1161+
)
11491162
SHARED_KNOWLEDGE_CHAT_USER_READ = Permission(
11501163
group=Group.SYSTEM_KNOWLEDGE_CHAT_USER, operate=Operate.READ, role_list=[RoleConstants.ADMIN],
11511164
parent_group=[SystemGroup.SHARED_KNOWLEDGE]

apps/knowledge/views/knowledge.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,8 @@ class HitTest(APIView):
196196
tags=[_('Knowledge Base')] # type: ignore
197197
)
198198
@has_permissions(
199-
PermissionConstants.KNOWLEDGE_EDIT.get_workspace_knowledge_permission(),
200-
PermissionConstants.KNOWLEDGE_EDIT.get_workspace_permission_workspace_manage_role(),
199+
PermissionConstants.KNOWLEDGE_HIT_TEST.get_workspace_knowledge_permission(),
200+
PermissionConstants.KNOWLEDGE_HIT_TEST.get_workspace_permission_workspace_manage_role(),
201201
RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
202202
RoleConstants.USER.get_workspace_role()
203203
)

ui/src/router/modules/document.ts

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,14 +85,28 @@ const DocumentRouter = {
8585
group: 'KnowledgeDetail',
8686
permission: [
8787
RoleConst.ADMIN,
88-
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
8988
() => {
9089
const to: any = get_next_route()
91-
return PermissionConst.KNOWLEDGE_CHAT_USER_READ.getKnowledgeWorkspaceResourcePermission(
92-
to ? to.params.id : '',
93-
)
90+
if (to.params.folderId == 'shared') {
91+
return RoleConst.ADMIN
92+
} else {
93+
return RoleConst.WORKSPACE_MANAGE.getWorkspaceRole
94+
}
95+
},
96+
() => {
97+
const to: any = get_next_route()
98+
if (to.params.folderId == 'shared') {
99+
return PermissionConst.SHARED_KNOWLEDGE_CHAT_USER_READ
100+
} else {
101+
return PermissionConst.KNOWLEDGE_CHAT_USER_READ.getKnowledgeWorkspaceResourcePermission(to ? to.params.id : '',)
102+
}
103+
},
104+
() => {
105+
const to: any = get_next_route()
106+
if (to.params.folder_id == 'shared') {
107+
return RoleConst.ADMIN
108+
} else { return PermissionConst.KNOWLEDGE_CHAT_USER_READ.getWorkspacePermissionWorkspaceManageRole }
94109
},
95-
PermissionConst.KNOWLEDGE_CHAT_USER_READ.getWorkspacePermissionWorkspaceManageRole,
96110
],
97111
},
98112
component: () => import('@/views/chat-user/index.vue'),

ui/src/router/modules/system.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ const systemRouter = {
6060
new ComplexPermission(
6161
[RoleConst.WORKSPACE_MANAGE, RoleConst.ADMIN],
6262
[PermissionConst.WORKSPACE_WORKSPACE_READ, PermissionConst.WORKSPACE_READ],
63-
[EditionConst.IS_EE, EditionConst.IS_PE],
63+
[EditionConst.IS_EE],
6464
'OR',
6565
),
6666
],

ui/src/views/chat-user/index.vue

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
</span>
4343
</div>
4444
<el-button type="primary" :disabled="current?.is_auth" @click="handleSave"
45-
v-if="hasPermission(permissionObj[(route.meta?.resourceType as string)],'OR')"
45+
v-if="hasPermission(permissionObj[route.path.includes('shared')?'SHAREDKNOWLEDGE':(route.meta?.resourceType as string)],'OR')"
4646
>
4747
{{ t('common.save') }}
4848
</el-button>
@@ -57,7 +57,7 @@
5757
:placeholder="$t('common.inputPlaceholder')" style="width: 220px" clearable />
5858
</div>
5959
<div class="flex align-center"
60-
v-if="hasPermission(permissionObj[(route.meta?.resourceType as string)],'OR')"
60+
v-if="hasPermission(permissionObj[route.path.includes('shared')?'SHAREDKNOWLEDGE':(route.meta?.resourceType as string)],'OR')"
6161
>
6262
<div class="color-secondary mr-8">{{ $t('views.chatUser.autoAuthorization') }}</div>
6363
<el-switch size="small" :model-value="current?.is_auth" @click="changeAuth"
@@ -108,6 +108,7 @@
108108
<script lang="ts" setup>
109109
import { onMounted, ref, watch, reactive, computed } from 'vue'
110110
import ChatUserApi from '@/api/chat-user/chat-user'
111+
import SharedChatUserApi from "@/api/system-shared/knowledge-chat-user"
111112
import { t } from '@/locales'
112113
import type { ChatUserGroupItem, ChatUserGroupUserItem } from '@/api/type/workspaceChatUser'
113114
import { useRoute } from 'vue-router'
@@ -132,14 +133,15 @@ const permissionPrecise = computed(() => {
132133
const {
133134
params: { id },
134135
} = route as any
135-
136+
136137
const permissionObj=ref<any>({
137138
"APPLICATION": new ComplexPermission([RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole],
138139
[PermissionConst.APPLICATION_CHAT_USER_EDIT,
139140
PermissionConst.APPLICATION_CHAT_USER_EDIT.getApplicationWorkspaceResourcePermission(id)],[],'OR'),
140141
"KNOWLEDGE": new ComplexPermission([RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole],
141142
[PermissionConst.KNOWLEDGE_CHAT_USER_EDIT,
142143
PermissionConst.KNOWLEDGE_CHAT_USER_EDIT.getKnowledgeWorkspaceResourcePermission(id)],[],'OR'),
144+
"SHAREDKNOWLEDGE": new ComplexPermission([RoleConst.ADMIN],[PermissionConst.SHARED_KNOWLEDGE_CHAT_USER_EDIT],[],'OR')
143145
})
144146
145147
const resource = reactive({ resource_id: route.params.id as string, resource_type: route.meta.resourceType as string })
@@ -149,10 +151,17 @@ const loading = ref(false)
149151
const list = ref<ChatUserGroupItem[]>([])
150152
const filterList = ref<ChatUserGroupItem[]>([]) // 搜索过滤后列表
151153
const current = ref<ChatUserGroupItem>()
154+
const chatUserAuthAPI=computed(()=>{
155+
if(route.path.includes('shared')){
156+
return SharedChatUserApi
157+
}else{
158+
return ChatUserApi
159+
}
160+
})
152161
153162
async function getUserGroupList() {
154163
try {
155-
const res = await ChatUserApi.getUserGroupList(resource, loading)
164+
const res = await chatUserAuthAPI.value.getUserGroupList(resource, loading)
156165
list.value = res.data
157166
filterList.value = filter(list.value, filterText.value)
158167
} catch (error) {
@@ -185,7 +194,7 @@ function clickUserGroup(item: ChatUserGroupItem) {
185194
async function changeAuth() {
186195
const params = [{ user_group_id: current.value?.id as string, is_auth: !current.value?.is_auth }]
187196
try {
188-
await ChatUserApi.editUserGroupList(resource, params, loading)
197+
await chatUserAuthAPI.value.editUserGroupList(resource, params, loading)
189198
await getUserGroupList()
190199
current.value = { name: current.value?.name as string, id: current.value?.id as string, is_auth: !current.value?.is_auth }
191200
getList()
@@ -211,7 +220,7 @@ const tableData = ref<ChatUserGroupUserItem[]>([])
211220
async function getList() {
212221
if (!current.value?.id) return
213222
try {
214-
const res = await ChatUserApi.getUserGroupUserList(resource, current.value?.id, paginationConfig, searchForm.value.name, rightLoading)
223+
const res = await chatUserAuthAPI.value.getUserGroupUserList(resource, current.value?.id, paginationConfig, searchForm.value.name, rightLoading)
215224
tableData.value = res.data.records
216225
paginationConfig.total = res.data.total
217226
} catch (error) {
@@ -249,7 +258,7 @@ const handleRowChange = (value: boolean, row: ChatUserGroupUserItem) => {
249258
async function handleSave() {
250259
try {
251260
const params = tableData.value.map(item => ({ chat_user_id: item.id, is_auth: item.is_auth }))
252-
await ChatUserApi.putUserGroupUser(resource, current.value?.id as string, params, rightLoading)
261+
await chatUserAuthAPI.value.putUserGroupUser(resource, current.value?.id as string, params, rightLoading)
253262
MsgSuccess(t('common.saveSuccess'))
254263
} catch (error) {
255264
console.error(error)

ui/src/views/tool/ToolFormDrawer.vue

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@
231231
<template #footer>
232232
<div>
233233
<el-button :loading="loading" @click="visible = false">{{ $t('common.cancel') }}</el-button>
234-
<el-button :loading="loading" @click="openDebug" v-if="permissionPrecise.debug(id)">{{
234+
<el-button :loading="loading" @click="openDebug" v-if="permissionPrecise.debug(form?.id||'or')">{{
235235
$t('common.debug')
236236
}}</el-button>
237237
<el-button type="primary" @click="submit(FormRef)" :loading="loading">
@@ -265,9 +265,6 @@ import permissionMap from '@/permission'
265265
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
266266
267267
const route = useRoute()
268-
const {
269-
params: { id, folderId }, // id为knowledgeID
270-
} = route as any
271268
272269
const props = defineProps({
273270
title: String,

0 commit comments

Comments
 (0)