Skip to content

Commit 89fec0b

Browse files
committed
feat: Workspace shared knowledge permission
1 parent 3324d4a commit 89fec0b

File tree

4 files changed

+86
-4
lines changed

4 files changed

+86
-4
lines changed

ui/src/api/shared-workspace.ts

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import { Result } from '@/request/Result'
22
import { get, post, del, put, exportFile, exportExcel } from '@/request/index'
33
import { type Ref } from 'vue'
4-
import type { pageRequest } from '@/api/type/common'
4+
import type { PageList, pageRequest } from '@/api/type/common'
55
import type { knowledgeData } from '@/api/type/knowledge'
66

77
import useStore from '@/stores'
8+
import type { ChatUserGroupItem } from './type/workspaceChatUser'
89

910
const prefix = '/system/shared'
1011
const prefix_workspace: any = { _value: 'workspace/' }
@@ -101,6 +102,29 @@ const getProblemsPage: (
101102
)
102103
}
103104

105+
/**
106+
* 获取工作空间下共享知识库用户组的用户列表
107+
*/
108+
const getUserGroupUserList: (
109+
resource: any,
110+
user_group_id:string,
111+
page: pageRequest,
112+
username_or_nickname: string,
113+
loading?: Ref<boolean>,
114+
) => Promise<Result<PageList<ChatUserGroupItem[]>>> = (resource, user_group_id, page, username_or_nickname, loading) => {
115+
return get (
116+
`${prefix}/${prefix_workspace.value}/KNOWLEDGE/${resource.resource_id}/user_group_id/${user_group_id}/${page.current_page}/${page.page_size}`
117+
,username_or_nickname ? {username_or_nickname} : undefined, loading,
118+
)
119+
}
120+
121+
/**
122+
* 获取工作空间下共享知识库的用户组
123+
*/
124+
const getUserGroupList: (resource: any, loading?: Ref<boolean>) => Promise<Result<ChatUserGroupItem[]>> = (resource, loading) => {
125+
return get (`${prefix}/${prefix_workspace.value}/KNOWLEDGE/${resource.resource_id}/user_group`, undefined, loading)
126+
}
127+
104128
/**
105129
* 段落分页列表
106130
* @param 参数 knowledge_id document_id
@@ -157,4 +181,6 @@ export default {
157181
getModelList,
158182
getToolList,
159183
getToolListPage,
184+
getUserGroupList,
185+
getUserGroupUserList
160186
}

ui/src/router/modules/document.ts

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,16 @@ const DocumentRouter = {
5151
if (to.params.folderId == 'shared') { return RoleConst.ADMIN } else {
5252
return PermissionConst.KNOWLEDGE_DOCUMENT_READ.getWorkspacePermissionWorkspaceManageRole()
5353
}
54+
},
55+
()=>{
56+
const to: any = get_next_route()
57+
if(to.params.folderId == 'share') {
58+
return new ComplexPermission([RoleConst.EXTENDS_USER.getWorkspaceRole()], [PermissionConst.KNOWLEDGE_DOCUMENT_READ.getWorkspacePermission()], [], 'AND') }
59+
},
60+
()=>{
61+
const to: any = get_next_route()
62+
if(to.params.folderId == 'share') {
63+
return RoleConst.USER.getWorkspaceRole() }
5464
}
5565
],
5666
},
@@ -89,6 +99,16 @@ const DocumentRouter = {
8999
const to: any = get_next_route()
90100
if (to.params.folderId == 'shared') { return RoleConst.ADMIN } else { return PermissionConst.KNOWLEDGE_PROBLEM_READ.getWorkspacePermissionWorkspaceManageRole() }
91101
},
102+
()=>{
103+
const to: any = get_next_route()
104+
if(to.params.folderId == 'share') {
105+
return new ComplexPermission([RoleConst.EXTENDS_USER.getWorkspaceRole()], [PermissionConst.KNOWLEDGE_PROBLEM_READ.getWorkspacePermission()], [], 'AND') }
106+
},
107+
()=>{
108+
const to: any = get_next_route()
109+
if(to.params.folderId == 'share') {
110+
return RoleConst.USER.getWorkspaceRole() }
111+
}
92112
],
93113
},
94114
component: () => import('@/views/problem/index.vue'),
@@ -125,6 +145,16 @@ const DocumentRouter = {
125145
const to: any = get_next_route()
126146
if (to.params.folderId == 'shared') { return RoleConst.ADMIN } else { return PermissionConst.KNOWLEDGE_HIT_TEST_READ.getWorkspacePermissionWorkspaceManageRole() }
127147
},
148+
()=>{
149+
const to: any = get_next_route()
150+
if(to.params.folderId == 'share') {
151+
return new ComplexPermission([RoleConst.EXTENDS_USER.getWorkspaceRole()], [PermissionConst.KNOWLEDGE_HIT_TEST_READ.getWorkspacePermission()], [], 'AND') }
152+
},
153+
()=>{
154+
const to: any = get_next_route()
155+
if(to.params.folderId == 'share') {
156+
return RoleConst.USER.getWorkspaceRole() }
157+
}
128158
],
129159
},
130160
component: () => import('@/views/hit-test/index.vue'),
@@ -172,6 +202,16 @@ const DocumentRouter = {
172202
if (to.params.folderId == 'shared') { return RoleConst.ADMIN }
173203
else { return new ComplexPermission([RoleConst.USER], [PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(to ? to.params.id : '',)], [EditionConst.IS_EE, EditionConst.IS_PE], 'AND') }
174204
},
205+
()=>{
206+
const to: any = get_next_route()
207+
if(to.params.folderId == 'share') {
208+
return new ComplexPermission([RoleConst.EXTENDS_USER.getWorkspaceRole()], [PermissionConst.KNOWLEDGE_CHAT_USER_READ.getWorkspacePermission()], [], 'AND') }
209+
},
210+
()=>{
211+
const to: any = get_next_route()
212+
if(to.params.folderId == 'share') {
213+
return RoleConst.USER.getWorkspaceRole() }
214+
}
175215
]
176216
},
177217
component: () => import('@/views/chat-user/index.vue'),
@@ -209,6 +249,16 @@ const DocumentRouter = {
209249
const to: any = get_next_route()
210250
if (to.params.folderId == 'shared') { return RoleConst.ADMIN } else { return PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermissionWorkspaceManageRole() }
211251
},
252+
()=>{
253+
const to: any = get_next_route()
254+
if(to.params.folderId == 'share') {
255+
return new ComplexPermission([RoleConst.EXTENDS_USER.getWorkspaceRole()], [PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermission()], [], 'AND') }
256+
},
257+
()=>{
258+
const to: any = get_next_route()
259+
if(to.params.folderId == 'share') {
260+
return RoleConst.USER.getWorkspaceRole() }
261+
}
212262
],
213263
},
214264
component: () => import('@/views/knowledge/KnowledgeSetting.vue'),

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,14 +179,14 @@ import { useRoute } from 'vue-router'
179179
import { SourceTypeEnum } from '@/enums/common'
180180
import { MsgSuccess } from '@/utils/message'
181181
import { ComplexPermission } from '@/utils/permission/type'
182-
import { EditionConst, RoleConst, PermissionConst } from '@/utils/permission/data'
182+
import { RoleConst, PermissionConst } from '@/utils/permission/data'
183183
import { hasPermission } from '@/utils/permission/index'
184184
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
185185
186186
const route = useRoute()
187187
188188
const {
189-
params: { id },
189+
params: { id, folderId },
190190
} = route as any
191191
192192
const permissionObj = ref<any>({
@@ -240,6 +240,7 @@ async function getUserGroupList() {
240240
try {
241241
const res = await loadSharedApi({
242242
type: 'chatUser',
243+
isShared: isShared.value,
243244
systemType: apiType.value,
244245
}).getUserGroupList(resource, loading)
245246
list.value = res.data
@@ -308,11 +309,16 @@ const paginationConfig = reactive({
308309
309310
const tableData = ref<ChatUserGroupUserItem[]>([])
310311
312+
const isShared = computed(() => {
313+
return folderId === 'share'
314+
})
315+
311316
async function getList() {
312317
if (!current.value?.id) return
313318
try {
314319
const res = await loadSharedApi({
315320
type: 'chatUser',
321+
isShared: isShared.value,
316322
systemType: apiType.value,
317323
}).getUserGroupUserList(
318324
resource,

ui/src/views/document/index.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1069,7 +1069,7 @@ function getList(bool?: boolean) {
10691069
order_by: orderBy.value,
10701070
folder_id: folderId,
10711071
}
1072-
loadSharedApi({ type: 'document', systemType: apiType.value })
1072+
loadSharedApi({ type: 'document', isShared: isShared.value, systemType: apiType.value })
10731073
.getDocumentPage(id as string, paginationConfig.value, param, bool ? undefined : loading)
10741074
.then((res: any) => {
10751075
documentData.value = res.data.records

0 commit comments

Comments
 (0)