Skip to content

Commit 7deeb18

Browse files
committed
feat: Shared knowledge access permission
1 parent 1f8cffb commit 7deeb18

File tree

5 files changed

+75
-31
lines changed

5 files changed

+75
-31
lines changed

apps/common/constants/permission_constants.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -754,12 +754,6 @@ class PermissionConstants(Enum):
754754
parent_group=[WorkspaceGroup.APPLICATION, UserGroup.APPLICATION],
755755
resource_permission_group_list=[ResourcePermissionConst.APPLICATION_VIEW],
756756
)
757-
APPLICATION_TO_CHAT = Permission(group=Group.APPLICATION, operate=Operate.TO_CHAT,
758-
role_list=[RoleConstants.ADMIN, RoleConstants.USER],
759-
parent_group=[WorkspaceGroup.APPLICATION, UserGroup.APPLICATION],
760-
resource_permission_group_list=[ResourcePermissionConst.APPLICATION_MANGE],
761-
label=_('Chat')
762-
)
763757
APPLICATION_DEBUG = Permission(group=Group.APPLICATION, operate=Operate.DEBUG,
764758
role_list=[RoleConstants.ADMIN, RoleConstants.USER],
765759
parent_group=[WorkspaceGroup.APPLICATION, UserGroup.APPLICATION],

ui/src/api/application/application-key.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const getAPIKey: (application_id: string, loading?: Ref<boolean>) => Promise<Res
1818
application_id,
1919
loading,
2020
) => {
21-
return get(`${prefix.value}/${application_id}/application`, undefined, loading)
21+
return get(`${prefix.value}/${application_id}/application_key`, undefined, loading)
2222
}
2323

2424
/**
@@ -29,7 +29,7 @@ const postAPIKey: (application_id: string, loading?: Ref<boolean>) => Promise<Re
2929
application_id,
3030
loading,
3131
) => {
32-
return post(`${prefix.value}/${application_id}/application`, {}, undefined, loading)
32+
return post(`${prefix.value}/${application_id}/application_key`, {}, undefined, loading)
3333
}
3434

3535
/**
@@ -42,7 +42,7 @@ const delAPIKey: (
4242
loading?: Ref<boolean>,
4343
) => Promise<Result<boolean>> = (application_id, api_key_id, loading) => {
4444
return del(
45-
`${prefix.value}/${application_id}/application/${api_key_id}`,
45+
`${prefix.value}/${application_id}/application_key/${api_key_id}`,
4646
undefined,
4747
undefined,
4848
loading,
@@ -63,7 +63,7 @@ const putAPIKey: (
6363
loading?: Ref<boolean>,
6464
) => Promise<Result<any>> = (application_id, api_key_id, data, loading) => {
6565
return put(
66-
`${prefix.value}/${application_id}/application/${api_key_id}`,
66+
`${prefix.value}/${application_id}/application_key/${api_key_id}`,
6767
data,
6868
undefined,
6969
loading,

ui/src/router/modules/document.ts

Lines changed: 65 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { SourceTypeEnum } from '@/enums/common'
22
import { get_next_route } from '@/utils/permission'
3-
import { PermissionConst, RoleConst } from '@/utils/permission/data'
3+
import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data'
4+
import { ComplexPermission } from '@/utils/permission/type'
45
const DocumentRouter = {
56
path: '/knowledge/:id/:folderId',
67
name: 'KnowledgeDetail',
@@ -21,14 +22,30 @@ const DocumentRouter = {
2122
group: 'KnowledgeDetail',
2223
permission: [
2324
RoleConst.ADMIN,
24-
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
2525
() => {
2626
const to: any = get_next_route()
27-
return PermissionConst.KNOWLEDGE_DOCUMENT_READ.getKnowledgeWorkspaceResourcePermission(
27+
if (to.params.folder_id == 'shared') {
28+
return RoleConst.ADMIN
29+
}else {
30+
return RoleConst.WORKSPACE_MANAGE.getWorkspaceRole
31+
}
32+
},
33+
() => {
34+
const to: any = get_next_route()
35+
36+
if (to.params.folderId == 'shared') {
37+
38+
return PermissionConst.SHARED_KNOWLEDGE_DOCUMENT_READ } else {
39+
return PermissionConst.KNOWLEDGE_DOCUMENT_READ.getKnowledgeWorkspaceResourcePermission(
2840
to ? to.params.id : '',
29-
)
41+
)}
3042
},
31-
PermissionConst.KNOWLEDGE_READ.getWorkspacePermissionWorkspaceManageRole,
43+
() => {
44+
const to: any = get_next_route()
45+
if (to.params.folderId == 'shared'){ return RoleConst.ADMIN } else {
46+
return PermissionConst.KNOWLEDGE_DOCUMENT_READ.getWorkspacePermissionWorkspaceManageRole
47+
}
48+
}
3249
],
3350
},
3451
component: () => import('@/views/document/index.vue'),
@@ -46,14 +63,20 @@ const DocumentRouter = {
4663
group: 'KnowledgeDetail',
4764
permission: [
4865
RoleConst.ADMIN,
49-
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
5066
() => {
5167
const to: any = get_next_route()
52-
return PermissionConst.KNOWLEDGE_PROBLEM_READ.getKnowledgeWorkspaceResourcePermission(
68+
if (to.params.folderId == 'shared') { return RoleConst.ADMIN } else { return RoleConst.WORKSPACE_MANAGE.getWorkspaceRole }
69+
},
70+
() => {
71+
const to: any = get_next_route()
72+
if (to.params.folderId == 'shared') { return PermissionConst.SHARED_KNOWLEDGE_PROBLEM_READ } else { return PermissionConst.KNOWLEDGE_PROBLEM_READ.getKnowledgeWorkspaceResourcePermission(
5373
to ? to.params.id : '',
54-
)
74+
) }
75+
},
76+
() => {
77+
const to: any = get_next_route()
78+
if (to.params.folderId == 'shared') { return RoleConst.ADMIN } else { return PermissionConst.KNOWLEDGE_PROBLEM_READ.getWorkspacePermissionWorkspaceManageRole }
5579
},
56-
PermissionConst.KNOWLEDGE_PROBLEM_READ.getWorkspacePermissionWorkspaceManageRole,
5780
],
5881
},
5982
component: () => import('@/views/problem/index.vue'),
@@ -68,6 +91,23 @@ const DocumentRouter = {
6891
parentPath: '/knowledge/:id/:folderId',
6992
parentName: 'KnowledgeDetail',
7093
group: 'KnowledgeDetail',
94+
permission: [
95+
RoleConst.ADMIN,
96+
() => {
97+
const to: any = get_next_route()
98+
if (to.params.folderId == 'shared') { return RoleConst.ADMIN } else { return RoleConst.WORKSPACE_MANAGE.getWorkspaceRole }
99+
},
100+
() => {
101+
const to: any = get_next_route()
102+
if (to.params.folderId == 'shared') { return PermissionConst.SHARED_KNOWLEDGE_HIT_TEST_READ } else { return PermissionConst.KNOWLEDGE_HIT_TEST_READ.getKnowledgeWorkspaceResourcePermission(
103+
to ? to.params.id : '',
104+
) }
105+
},
106+
() => {
107+
const to: any = get_next_route()
108+
if (to.params.folderId == 'shared') { return RoleConst.ADMIN } else { return PermissionConst.KNOWLEDGE_HIT_TEST_READ.getWorkspacePermissionWorkspaceManageRole }
109+
},
110+
],
71111
},
72112
component: () => import('@/views/hit-test/index.vue'),
73113
},
@@ -83,16 +123,15 @@ const DocumentRouter = {
83123
parentName: 'KnowledgeDetail',
84124
resourceType: SourceTypeEnum.KNOWLEDGE,
85125
group: 'KnowledgeDetail',
86-
permission: [
87-
RoleConst.ADMIN,
126+
permission: new ComplexPermission([ RoleConst.ADMIN,
88127
() => {
89128
const to: any = get_next_route()
90129
if (to.params.folderId == 'shared') {
91130
return RoleConst.ADMIN
92131
} else {
93-
return RoleConst.WORKSPACE_MANAGE.getWorkspaceRole
132+
return RoleConst.WORKSPACE_MANAGE.getWorkspaceRole()
94133
}
95-
},
134+
},],[
96135
() => {
97136
const to: any = get_next_route()
98137
if (to.params.folderId == 'shared') {
@@ -104,10 +143,10 @@ const DocumentRouter = {
104143
() => {
105144
const to: any = get_next_route()
106145
if (to.params.folder_id == 'shared') {
107-
return RoleConst.ADMIN
108-
} else { return PermissionConst.KNOWLEDGE_CHAT_USER_READ.getWorkspacePermissionWorkspaceManageRole }
146+
return PermissionConst.SHARED_KNOWLEDGE_CHAT_USER_READ
147+
} else { return PermissionConst.KNOWLEDGE_CHAT_USER_READ.getWorkspacePermissionWorkspaceManageRole() }
109148
},
110-
],
149+
],[EditionConst.IS_EE,EditionConst.IS_PE],'OR'),
111150
},
112151
component: () => import('@/views/chat-user/index.vue'),
113152
},
@@ -124,14 +163,20 @@ const DocumentRouter = {
124163
group: 'KnowledgeDetail',
125164
permission: [
126165
RoleConst.ADMIN,
127-
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
128166
() => {
129167
const to: any = get_next_route()
130-
return PermissionConst.KNOWLEDGE_EDIT.getKnowledgeWorkspaceResourcePermission(
168+
if (to.params.folderId == 'shared') { return RoleConst.ADMIN } else { return RoleConst.WORKSPACE_MANAGE.getWorkspaceRole }
169+
},
170+
() => {
171+
const to: any = get_next_route()
172+
if (to.params.folderId == 'shared') { return PermissionConst.SHARED_KNOWLEDGE_EDIT } else { return PermissionConst.KNOWLEDGE_EDIT.getKnowledgeWorkspaceResourcePermission(
131173
to ? to.params.id : '',
132-
)
174+
) }
175+
},
176+
() => {
177+
const to: any = get_next_route()
178+
if (to.params.folderId == 'shared') { return RoleConst.ADMIN } else { return PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermissionWorkspaceManageRole }
133179
},
134-
PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermissionWorkspaceManageRole,
135180
],
136181
},
137182
component: () => import('@/views/knowledge/KnowledgeSetting.vue'),

ui/src/utils/permission/data.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,9 @@ const PermissionConst = {
190190
SHARED_KNOWLEDGE_PROBLEM_EDIT: new Permission('SYSTEM_KNOWLEDGE_PROBLEM:READ+EDIT'),
191191
SHARED_KNOWLEDGE_PROBLEM_DELETE: new Permission('SYSTEM_KNOWLEDGE_PROBLEM:READ+DELETE'),
192192

193+
SHARED_KNOWLEDGE_HIT_TEST_READ: new Permission('SYSTEM_KNOWLEDGE_HIT_TEST:READ'),
194+
KNOWLEDGE_HIT_TEST_READ: new Permission('KNOWLEDGE_HIT_TEST:READ'),
195+
193196
SHARED_KNOWLEDGE_CHAT_USER_READ: new Permission('SYSTEM_KNOWLEDGE_CHAT_USER:READ'),
194197
SHARED_KNOWLEDGE_CHAT_USER_EDIT: new Permission('SYSTEM_KNOWLEDGE_CHAT_USER:READ+EDIT'),
195198

ui/src/views/application/index.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,9 @@
222222
</el-button>
223223
<template #dropdown>
224224
<el-dropdown-menu>
225-
<el-dropdown-item @click.stop="getAccessToken(item.id)">
225+
<el-dropdown-item @click.stop="getAccessToken(item.id)"
226+
v-if="permissionPrecise.overview_access(item.id)"
227+
>
226228
<AppIcon iconName="app-create-chat"></AppIcon>
227229
{{ $t('views.application.operation.toChat') }}
228230
</el-dropdown-item>

0 commit comments

Comments
 (0)