Skip to content

Commit 58cf4a0

Browse files
committed
feat: Resource knowledge permission
1 parent 1f1a1bb commit 58cf4a0

File tree

8 files changed

+120
-18
lines changed

8 files changed

+120
-18
lines changed

ui/src/permission/knowledge/system-manage.ts

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ const systemManage = {
5050
],'OR'
5151
),
5252
// 文档
53+
doc_read: () =>
54+
hasPermission([
55+
RoleConst.ADMIN,
56+
PermissionConst.RESOURCE_KNOWLEDGE_DOCUMENT_READ
57+
],'OR'),
5358
doc_create: () => hasPermission(
5459
[
5560
RoleConst.ADMIN,
@@ -104,13 +109,23 @@ const systemManage = {
104109
PermissionConst.RESOURCE_KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE
105110
],'OR'
106111
),
107-
112+
113+
knowledge_chat_user_read: () =>
114+
hasPermission([
115+
RoleConst.ADMIN,
116+
PermissionConst.RESOURCE_KNOWLEDGE_CHAT_USER_READ
117+
],'OR'),
108118
knowledge_chat_user_edit: () =>
109119
hasPermission([
110120
RoleConst.ADMIN,
111121
PermissionConst.RESOURCE_KNOWLEDGE_CHAT_USER_EDIT
112122
],'OR'),
113-
123+
124+
problem_read: () =>
125+
hasPermission([
126+
RoleConst.ADMIN,
127+
PermissionConst.RESOURCE_KNOWLEDGE_PROBLEM_READ
128+
],'OR'),
114129
problem_create: () =>
115130
hasPermission([
116131
RoleConst.ADMIN,
@@ -139,6 +154,11 @@ const systemManage = {
139154
folderCreate: () => false,
140155
folderEdit: () => false,
141156
folderDelete: () => false,
157+
hit_test: () =>
158+
hasPermission([
159+
RoleConst.ADMIN,
160+
PermissionConst.RESOURCE_KNOWLEDGE_HIT_TEST
161+
], 'OR'),
142162
}
143163

144164
export default systemManage

ui/src/permission/knowledge/system-share.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ const share = {
6060
'OR'
6161
),
6262

63+
doc_read: () => false,
6364
doc_create: () =>
6465
hasPermission (
6566
[
@@ -140,15 +141,16 @@ const share = {
140141
],
141142
'OR'
142143
),
144+
knowledge_chat_user_read: () => false,
143145
knowledge_chat_user_edit: () =>
144146
hasPermission(
145147
[
146148
RoleConst.ADMIN,
147149
PermissionConst.SHARED_KNOWLEDGE_CHAT_USER_EDIT
148150
],
149151
'OR'
150-
)
151-
,
152+
),
153+
problem_read: () => false,
152154
problem_relate: () =>
153155
hasPermission (
154156
[
@@ -176,5 +178,6 @@ const share = {
176178
folderCreate: () => false,
177179
folderEdit: () => false,
178180
folderDelete: () => false,
181+
hit_test: () => false,
179182
}
180183
export default share

ui/src/permission/knowledge/workspace-share.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const workspaceShare = {
1111
export: () => false,
1212
delete: () => false,
1313

14+
doc_read: () => false,
1415
doc_create: () => false,
1516
doc_vector: () => false,
1617
doc_generate: () => false,
@@ -21,8 +22,10 @@ const workspaceShare = {
2122
doc_export: () => false,
2223
doc_download: () => false,
2324

25+
knowledge_chat_user_read: () => false,
2426
knowledge_chat_user_edit: () => false,
2527

28+
problem_read: () => false,
2629
problem_create: () => false,
2730
problem_relate: () => false,
2831
problem_delete: () => false,
@@ -31,6 +34,7 @@ const workspaceShare = {
3134
folderCreate: () => false,
3235
folderEdit: () => false,
3336
folderDelete: () => false,
37+
hit_test: () => false,
3438
}
3539

3640
export default workspaceShare

ui/src/permission/knowledge/workspace.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ const workspace = {
110110
],
111111
'OR',
112112
),
113+
doc_read: () => false,
113114
doc_create: (source_id:string) =>
114115
hasPermission(
115116
[
@@ -200,6 +201,7 @@ const workspace = {
200201
],
201202
'OR',
202203
),
204+
knowledge_chat_user_read: (source_id:string) => false,
203205
knowledge_chat_user_edit: (source_id:string) =>
204206
hasPermission(
205207
[
@@ -209,7 +211,8 @@ const workspace = {
209211
PermissionConst.KNOWLEDGE_CHAT_USER_EDIT.getWorkspacePermissionWorkspaceManageRole,
210212
]
211213
,'OR'
212-
),
214+
),
215+
problem_read: () => false,
213216
problem_create: (source_id:string) =>
214217
hasPermission(
215218
[
@@ -250,6 +253,7 @@ const workspace = {
250253
],
251254
'OR',
252255
),
256+
hit_test: () => false,
253257
}
254258

255259
export default workspace

ui/src/router/modules/document.ts

Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,15 @@ const DocumentRouter = {
6161
const to: any = get_next_route()
6262
if(to.params.folderId == 'share') {
6363
return RoleConst.USER.getWorkspaceRole() }
64-
}
64+
},
65+
()=>{
66+
const to: any = get_next_route()
67+
if (to.params.folderId == 'resource-management') { return RoleConst.ADMIN}
68+
},
69+
()=>{
70+
const to: any = get_next_route()
71+
if (to.params.folderId == 'resource-management') { return PermissionConst.RESOURCE_KNOWLEDGE_DOCUMENT_READ}
72+
},
6573
],
6674
},
6775
component: () => import('@/views/document/index.vue'),
@@ -108,7 +116,15 @@ const DocumentRouter = {
108116
const to: any = get_next_route()
109117
if(to.params.folderId == 'share') {
110118
return RoleConst.USER.getWorkspaceRole() }
111-
}
119+
},
120+
()=>{
121+
const to: any = get_next_route()
122+
if (to.params.folderId == 'resource-management') { return RoleConst.ADMIN}
123+
},
124+
()=>{
125+
const to: any = get_next_route()
126+
if (to.params.folderId == 'resource-management') { return PermissionConst.RESOURCE_KNOWLEDGE_PROBLEM_READ}
127+
},
112128
],
113129
},
114130
component: () => import('@/views/problem/index.vue'),
@@ -154,7 +170,15 @@ const DocumentRouter = {
154170
const to: any = get_next_route()
155171
if(to.params.folderId == 'share') {
156172
return RoleConst.USER.getWorkspaceRole() }
157-
}
173+
},
174+
()=>{
175+
const to: any = get_next_route()
176+
if (to.params.folderId == 'resource-management') { return RoleConst.ADMIN}
177+
},
178+
()=>{
179+
const to: any = get_next_route()
180+
if (to.params.folderId == 'resource-management') { return PermissionConst.RESOURCE_KNOWLEDGE_HIT_TEST}
181+
},
158182
],
159183
},
160184
component: () => import('@/views/hit-test/index.vue'),
@@ -211,7 +235,15 @@ const DocumentRouter = {
211235
const to: any = get_next_route()
212236
if(to.params.folderId == 'share') {
213237
return RoleConst.USER.getWorkspaceRole() }
214-
}
238+
},
239+
()=>{
240+
const to: any = get_next_route()
241+
if (to.params.folderId == 'resource-management') { return RoleConst.ADMIN}
242+
},
243+
()=>{
244+
const to: any = get_next_route()
245+
if (to.params.folderId == 'resource-management') { return PermissionConst.RESOURCE_KNOWLEDGE_CHAT_USER_READ}
246+
},
215247
]
216248
},
217249
component: () => import('@/views/chat-user/index.vue'),
@@ -258,7 +290,15 @@ const DocumentRouter = {
258290
const to: any = get_next_route()
259291
if(to.params.folderId == 'share') {
260292
return RoleConst.USER.getWorkspaceRole() }
261-
}
293+
},
294+
()=>{
295+
const to: any = get_next_route()
296+
if (to.params.folderId == 'resource-management') { return RoleConst.ADMIN}
297+
},
298+
()=>{
299+
const to: any = get_next_route()
300+
if (to.params.folderId == 'resource-management') { return PermissionConst.RESOURCE_KNOWLEDGE_EDIT}
301+
},
262302
],
263303
},
264304
component: () => import('@/views/knowledge/KnowledgeSetting.vue'),

ui/src/utils/permission/data.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,7 @@ const PermissionConst = {
246246

247247
RESOURCE_KNOWLEDGE_CHAT_USER_READ: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_CHAT_USER:READ'),
248248
RESOURCE_KNOWLEDGE_CHAT_USER_EDIT: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_CHAT_USER:READ+EDIT'),
249+
RESOURCE_KNOWLEDGE_HIT_TEST: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_HIT_TEST:READ'),
249250

250251
RESOURCE_APPLICATION_READ: new Permission('SYSTEM_RESOURCE_APPLICATION:READ'),
251252
RESOURCE_APPLICATION_EDIT: new Permission('SYSTEM_RESOURCE_APPLICATION:READ+EDIT'),

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

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,7 @@
6363
? false
6464
: hasPermission(
6565
permissionObj[
66-
route.path.includes('shared')
67-
? 'SHAREDKNOWLEDGE'
68-
: (route.meta?.resourceType as string)
66+
currentPermissionKey
6967
],
7068
'OR',
7169
)
@@ -96,9 +94,7 @@
9694
? false
9795
: hasPermission(
9896
permissionObj[
99-
route.path.includes('shared')
100-
? 'SHAREDKNOWLEDGE'
101-
: (route.meta?.resourceType as string)
97+
currentPermissionKey
10298
],
10399
'OR',
104100
)
@@ -207,6 +203,8 @@ const permissionObj = ref<any>({
207203
[],
208204
'OR',
209205
),
206+
APPLICATION_KNOWLEDGE: [RoleConst.ADMIN, PermissionConst.RESOURCE_APPLICATION_CHAT_USER_EDIT],
207+
RESOURCE_KNOWLEDGE: [RoleConst.ADMIN, PermissionConst.RESOURCE_KNOWLEDGE_CHAT_USER_EDIT],
210208
SHAREDKNOWLEDGE: new ComplexPermission(
211209
[RoleConst.ADMIN],
212210
[PermissionConst.SHARED_KNOWLEDGE_CHAT_USER_EDIT],
@@ -215,6 +213,17 @@ const permissionObj = ref<any>({
215213
),
216214
})
217215
216+
const currentPermissionKey = computed(() => {
217+
if (route.path.includes('shared')) return 'SHAREDKNOWLEDGE'
218+
if (route.path.includes('resource-management')) {
219+
if (route.meta?.resourceType === 'KNOWLEDGE') { return 'RESOURCE_KNOWLEDGE' }
220+
else if (route.meta?.resourceType === 'APPLICATION') { return 'RESOURCE_APPLICATION' }
221+
}
222+
return route.meta?.resourceType as string
223+
})
224+
225+
console.log(currentPermissionKey.value)
226+
218227
const resource = reactive({
219228
resource_id: route.params.id as string,
220229
resource_type: route.meta.resourceType as string,

ui/src/views/system-resource-management/KnowledgeResourceIndex.vue

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,9 @@
146146
:content="$t('views.system.resource_management.management')"
147147
placement="top"
148148
>
149-
<span class="mr-8">
149+
<span class="mr-8"
150+
v-if="ManagePermission()"
151+
>
150152
<el-button
151153
type="primary"
152154
text
@@ -178,7 +180,9 @@
178180
</el-button>
179181
</span>
180182
</el-tooltip>
181-
<el-dropdown trigger="click">
183+
<el-dropdown trigger="click"
184+
v-if="MoreFilledPermission()"
185+
>
182186
<el-button text @click.stop>
183187
<el-icon>
184188
<MoreFilled />
@@ -264,6 +268,23 @@ const permissionPrecise = computed(() => {
264268
return permissionMap['knowledge']['systemManage']
265269
})
266270
271+
const ManagePermission = () => {
272+
return permissionPrecise.value.doc_read() ||
273+
permissionPrecise.value.problem_read() ||
274+
permissionPrecise.value.edit() ||
275+
permissionPrecise.value.knowledge_chat_user_read() ||
276+
permissionPrecise.value.hit_test()
277+
}
278+
// sync generete edit export delete
279+
const MoreFilledPermission = () => {
280+
return permissionPrecise.value.sync() ||
281+
permissionPrecise.value.generate() ||
282+
permissionPrecise.value.edit() ||
283+
permissionPrecise.value.export() ||
284+
permissionPrecise.value.delete()
285+
}
286+
287+
267288
const search_type = ref('name')
268289
const search_form = ref<any>({
269290
name: '',

0 commit comments

Comments
 (0)