feat: Workspace shared knowledge permission

This commit is contained in:
zhangzhanwei 2025-07-10 18:23:03 +08:00 committed by zhanweizhang7
parent 3324d4ab35
commit a2726a9367
4 changed files with 86 additions and 4 deletions

View File

@ -1,10 +1,11 @@
import { Result } from '@/request/Result'
import { get, post, del, put, exportFile, exportExcel } from '@/request/index'
import { type Ref } from 'vue'
import type { pageRequest } from '@/api/type/common'
import type { PageList, pageRequest } from '@/api/type/common'
import type { knowledgeData } from '@/api/type/knowledge'
import useStore from '@/stores'
import type { ChatUserGroupItem } from './type/workspaceChatUser'
const prefix = '/system/shared'
const prefix_workspace: any = { _value: 'workspace/' }
@ -101,6 +102,29 @@ const getProblemsPage: (
)
}
/**
*
*/
const getUserGroupUserList: (
resource: any,
user_group_id:string,
page: pageRequest,
username_or_nickname: string,
loading?: Ref<boolean>,
) => Promise<Result<PageList<ChatUserGroupItem[]>>> = (resource, user_group_id, page, username_or_nickname, loading) => {
return get (
`${prefix}/${prefix_workspace.value}/KNOWLEDGE/${resource.resource_id}/user_group_id/${user_group_id}/${page.current_page}/${page.page_size}`
,username_or_nickname ? {username_or_nickname} : undefined, loading,
)
}
/**
*
*/
const getUserGroupList: (resource: any, loading?: Ref<boolean>) => Promise<Result<ChatUserGroupItem[]>> = (resource, loading) => {
return get (`${prefix}/${prefix_workspace.value}/KNOWLEDGE/${resource.resource_id}/user_group`, undefined, loading)
}
/**
*
* @param knowledge_id document_id
@ -157,4 +181,6 @@ export default {
getModelList,
getToolList,
getToolListPage,
getUserGroupList,
getUserGroupUserList
}

View File

@ -51,6 +51,16 @@ const DocumentRouter = {
if (to.params.folderId == 'shared') { return RoleConst.ADMIN } else {
return PermissionConst.KNOWLEDGE_DOCUMENT_READ.getWorkspacePermissionWorkspaceManageRole()
}
},
()=>{
const to: any = get_next_route()
if(to.params.folderId == 'share') {
return new ComplexPermission([RoleConst.EXTENDS_USER.getWorkspaceRole()], [PermissionConst.KNOWLEDGE_DOCUMENT_READ.getWorkspacePermission()], [], 'AND') }
},
()=>{
const to: any = get_next_route()
if(to.params.folderId == 'share') {
return RoleConst.USER.getWorkspaceRole() }
}
],
},
@ -89,6 +99,16 @@ const DocumentRouter = {
const to: any = get_next_route()
if (to.params.folderId == 'shared') { return RoleConst.ADMIN } else { return PermissionConst.KNOWLEDGE_PROBLEM_READ.getWorkspacePermissionWorkspaceManageRole() }
},
()=>{
const to: any = get_next_route()
if(to.params.folderId == 'share') {
return new ComplexPermission([RoleConst.EXTENDS_USER.getWorkspaceRole()], [PermissionConst.KNOWLEDGE_PROBLEM_READ.getWorkspacePermission()], [], 'AND') }
},
()=>{
const to: any = get_next_route()
if(to.params.folderId == 'share') {
return RoleConst.USER.getWorkspaceRole() }
}
],
},
component: () => import('@/views/problem/index.vue'),
@ -125,6 +145,16 @@ const DocumentRouter = {
const to: any = get_next_route()
if (to.params.folderId == 'shared') { return RoleConst.ADMIN } else { return PermissionConst.KNOWLEDGE_HIT_TEST_READ.getWorkspacePermissionWorkspaceManageRole() }
},
()=>{
const to: any = get_next_route()
if(to.params.folderId == 'share') {
return new ComplexPermission([RoleConst.EXTENDS_USER.getWorkspaceRole()], [PermissionConst.KNOWLEDGE_HIT_TEST_READ.getWorkspacePermission()], [], 'AND') }
},
()=>{
const to: any = get_next_route()
if(to.params.folderId == 'share') {
return RoleConst.USER.getWorkspaceRole() }
}
],
},
component: () => import('@/views/hit-test/index.vue'),
@ -172,6 +202,16 @@ const DocumentRouter = {
if (to.params.folderId == 'shared') { return RoleConst.ADMIN }
else { return new ComplexPermission([RoleConst.USER], [PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(to ? to.params.id : '',)], [EditionConst.IS_EE, EditionConst.IS_PE], 'AND') }
},
()=>{
const to: any = get_next_route()
if(to.params.folderId == 'share') {
return new ComplexPermission([RoleConst.EXTENDS_USER.getWorkspaceRole()], [PermissionConst.KNOWLEDGE_CHAT_USER_READ.getWorkspacePermission()], [], 'AND') }
},
()=>{
const to: any = get_next_route()
if(to.params.folderId == 'share') {
return RoleConst.USER.getWorkspaceRole() }
}
]
},
component: () => import('@/views/chat-user/index.vue'),
@ -209,6 +249,16 @@ const DocumentRouter = {
const to: any = get_next_route()
if (to.params.folderId == 'shared') { return RoleConst.ADMIN } else { return PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermissionWorkspaceManageRole() }
},
()=>{
const to: any = get_next_route()
if(to.params.folderId == 'share') {
return new ComplexPermission([RoleConst.EXTENDS_USER.getWorkspaceRole()], [PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermission()], [], 'AND') }
},
()=>{
const to: any = get_next_route()
if(to.params.folderId == 'share') {
return RoleConst.USER.getWorkspaceRole() }
}
],
},
component: () => import('@/views/knowledge/KnowledgeSetting.vue'),

View File

@ -179,14 +179,14 @@ import { useRoute } from 'vue-router'
import { SourceTypeEnum } from '@/enums/common'
import { MsgSuccess } from '@/utils/message'
import { ComplexPermission } from '@/utils/permission/type'
import { EditionConst, RoleConst, PermissionConst } from '@/utils/permission/data'
import { RoleConst, PermissionConst } from '@/utils/permission/data'
import { hasPermission } from '@/utils/permission/index'
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
const route = useRoute()
const {
params: { id },
params: { id, folderId },
} = route as any
const permissionObj = ref<any>({
@ -240,6 +240,7 @@ async function getUserGroupList() {
try {
const res = await loadSharedApi({
type: 'chatUser',
isShared: isShared.value,
systemType: apiType.value,
}).getUserGroupList(resource, loading)
list.value = res.data
@ -308,11 +309,16 @@ const paginationConfig = reactive({
const tableData = ref<ChatUserGroupUserItem[]>([])
const isShared = computed(() => {
return folderId === 'share'
})
async function getList() {
if (!current.value?.id) return
try {
const res = await loadSharedApi({
type: 'chatUser',
isShared: isShared.value,
systemType: apiType.value,
}).getUserGroupUserList(
resource,

View File

@ -1069,7 +1069,7 @@ function getList(bool?: boolean) {
order_by: orderBy.value,
folder_id: folderId,
}
loadSharedApi({ type: 'document', systemType: apiType.value })
loadSharedApi({ type: 'document', isShared: isShared.value, systemType: apiType.value })
.getDocumentPage(id as string, paginationConfig.value, param, bool ? undefined : loading)
.then((res: any) => {
documentData.value = res.data.records