feat: Workspace shared knowledge permission
This commit is contained in:
parent
3324d4ab35
commit
a2726a9367
@ -1,10 +1,11 @@
|
|||||||
import { Result } from '@/request/Result'
|
import { Result } from '@/request/Result'
|
||||||
import { get, post, del, put, exportFile, exportExcel } from '@/request/index'
|
import { get, post, del, put, exportFile, exportExcel } from '@/request/index'
|
||||||
import { type Ref } from 'vue'
|
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 type { knowledgeData } from '@/api/type/knowledge'
|
||||||
|
|
||||||
import useStore from '@/stores'
|
import useStore from '@/stores'
|
||||||
|
import type { ChatUserGroupItem } from './type/workspaceChatUser'
|
||||||
|
|
||||||
const prefix = '/system/shared'
|
const prefix = '/system/shared'
|
||||||
const prefix_workspace: any = { _value: 'workspace/' }
|
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
|
* @param 参数 knowledge_id document_id
|
||||||
@ -157,4 +181,6 @@ export default {
|
|||||||
getModelList,
|
getModelList,
|
||||||
getToolList,
|
getToolList,
|
||||||
getToolListPage,
|
getToolListPage,
|
||||||
|
getUserGroupList,
|
||||||
|
getUserGroupUserList
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,6 +51,16 @@ const DocumentRouter = {
|
|||||||
if (to.params.folderId == 'shared') { return RoleConst.ADMIN } else {
|
if (to.params.folderId == 'shared') { return RoleConst.ADMIN } else {
|
||||||
return PermissionConst.KNOWLEDGE_DOCUMENT_READ.getWorkspacePermissionWorkspaceManageRole()
|
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()
|
const to: any = get_next_route()
|
||||||
if (to.params.folderId == 'shared') { return RoleConst.ADMIN } else { return PermissionConst.KNOWLEDGE_PROBLEM_READ.getWorkspacePermissionWorkspaceManageRole() }
|
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'),
|
component: () => import('@/views/problem/index.vue'),
|
||||||
@ -125,6 +145,16 @@ const DocumentRouter = {
|
|||||||
const to: any = get_next_route()
|
const to: any = get_next_route()
|
||||||
if (to.params.folderId == 'shared') { return RoleConst.ADMIN } else { return PermissionConst.KNOWLEDGE_HIT_TEST_READ.getWorkspacePermissionWorkspaceManageRole() }
|
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'),
|
component: () => import('@/views/hit-test/index.vue'),
|
||||||
@ -172,6 +202,16 @@ const DocumentRouter = {
|
|||||||
if (to.params.folderId == 'shared') { return RoleConst.ADMIN }
|
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') }
|
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'),
|
component: () => import('@/views/chat-user/index.vue'),
|
||||||
@ -209,6 +249,16 @@ const DocumentRouter = {
|
|||||||
const to: any = get_next_route()
|
const to: any = get_next_route()
|
||||||
if (to.params.folderId == 'shared') { return RoleConst.ADMIN } else { return PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermissionWorkspaceManageRole() }
|
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'),
|
component: () => import('@/views/knowledge/KnowledgeSetting.vue'),
|
||||||
|
|||||||
@ -179,14 +179,14 @@ import { useRoute } from 'vue-router'
|
|||||||
import { SourceTypeEnum } from '@/enums/common'
|
import { SourceTypeEnum } from '@/enums/common'
|
||||||
import { MsgSuccess } from '@/utils/message'
|
import { MsgSuccess } from '@/utils/message'
|
||||||
import { ComplexPermission } from '@/utils/permission/type'
|
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 { hasPermission } from '@/utils/permission/index'
|
||||||
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|
||||||
const {
|
const {
|
||||||
params: { id },
|
params: { id, folderId },
|
||||||
} = route as any
|
} = route as any
|
||||||
|
|
||||||
const permissionObj = ref<any>({
|
const permissionObj = ref<any>({
|
||||||
@ -240,6 +240,7 @@ async function getUserGroupList() {
|
|||||||
try {
|
try {
|
||||||
const res = await loadSharedApi({
|
const res = await loadSharedApi({
|
||||||
type: 'chatUser',
|
type: 'chatUser',
|
||||||
|
isShared: isShared.value,
|
||||||
systemType: apiType.value,
|
systemType: apiType.value,
|
||||||
}).getUserGroupList(resource, loading)
|
}).getUserGroupList(resource, loading)
|
||||||
list.value = res.data
|
list.value = res.data
|
||||||
@ -308,11 +309,16 @@ const paginationConfig = reactive({
|
|||||||
|
|
||||||
const tableData = ref<ChatUserGroupUserItem[]>([])
|
const tableData = ref<ChatUserGroupUserItem[]>([])
|
||||||
|
|
||||||
|
const isShared = computed(() => {
|
||||||
|
return folderId === 'share'
|
||||||
|
})
|
||||||
|
|
||||||
async function getList() {
|
async function getList() {
|
||||||
if (!current.value?.id) return
|
if (!current.value?.id) return
|
||||||
try {
|
try {
|
||||||
const res = await loadSharedApi({
|
const res = await loadSharedApi({
|
||||||
type: 'chatUser',
|
type: 'chatUser',
|
||||||
|
isShared: isShared.value,
|
||||||
systemType: apiType.value,
|
systemType: apiType.value,
|
||||||
}).getUserGroupUserList(
|
}).getUserGroupUserList(
|
||||||
resource,
|
resource,
|
||||||
|
|||||||
@ -1069,7 +1069,7 @@ function getList(bool?: boolean) {
|
|||||||
order_by: orderBy.value,
|
order_by: orderBy.value,
|
||||||
folder_id: folderId,
|
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)
|
.getDocumentPage(id as string, paginationConfig.value, param, bool ? undefined : loading)
|
||||||
.then((res: any) => {
|
.then((res: any) => {
|
||||||
documentData.value = res.data.records
|
documentData.value = res.data.records
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user