mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-27 20:42:52 +00:00
feat: Workspace shared knowledge permission
This commit is contained in:
parent
3324d4ab35
commit
a2726a9367
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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'),
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue