Skip to content

Commit 2d38540

Browse files
committed
feat: Tag Permission
1 parent 219fe97 commit 2d38540

File tree

7 files changed

+181
-13
lines changed

7 files changed

+181
-13
lines changed

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

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,12 @@ const systemManage = {
109109
PermissionConst.RESOURCE_KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE
110110
],'OR'
111111
),
112-
112+
doc_tag: () => hasPermission(
113+
[
114+
RoleConst.ADMIN,
115+
PermissionConst.RESOURCE_KNOWLEDGE_DOCUMENT_TAG
116+
],'OR'
117+
),
113118
knowledge_chat_user_read: () =>
114119
hasPermission([
115120
RoleConst.ADMIN,
@@ -150,7 +155,31 @@ const systemManage = {
150155
PermissionConst.RESOURCE_KNOWLEDGE_PROBLEM_EDIT
151156
],'OR'
152157
),
153-
chat_user_edit: () =>false,
158+
tag_read: () =>
159+
hasPermission([
160+
RoleConst.ADMIN,
161+
PermissionConst.RESOURCE_KNOWLEDGE_TAG_READ
162+
],'OR'
163+
),
164+
tag_create: () =>
165+
hasPermission([
166+
RoleConst.ADMIN,
167+
PermissionConst.RESOURCE_KNOWLEDGE_TAG_CREATE
168+
],'OR'
169+
),
170+
tag_edit: () =>
171+
hasPermission([
172+
RoleConst.ADMIN,
173+
PermissionConst.RESOURCE_KNOWLEDGE_TAG_EDIT
174+
],'OR'
175+
),
176+
tag_delete: () =>
177+
hasPermission([
178+
RoleConst.ADMIN,
179+
PermissionConst.RESOURCE_KNOWLEDGE_TAG_DELETE
180+
],'OR'
181+
),
182+
chat_user_edit: () =>false,
154183

155184

156185
auth: () =>

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

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,14 @@ const share = {
133133
],
134134
'OR'
135135
),
136+
doc_tag: () =>
137+
hasPermission (
138+
[
139+
RoleConst.ADMIN,
140+
PermissionConst.SHARED_KNOWLEDGE_DOCUMENT_TAG
141+
],
142+
'OR'
143+
),
136144
problem_create: () =>
137145
hasPermission (
138146
[
@@ -182,6 +190,39 @@ const share = {
182190
],
183191
'OR'
184192
),
193+
tag_read: () =>
194+
hasPermission(
195+
[
196+
RoleConst.ADMIN,
197+
PermissionConst.SHARED_KNOWLEDGE_TAG_READ
198+
],
199+
'OR',
200+
),
201+
tag_create: () =>
202+
hasPermission(
203+
[
204+
RoleConst.ADMIN,
205+
PermissionConst.SHARED_KNOWLEDGE_TAG_CREATE
206+
],
207+
'OR',
208+
),
209+
tag_edit: () =>
210+
hasPermission(
211+
[
212+
RoleConst.ADMIN,
213+
PermissionConst.SHARED_KNOWLEDGE_TAG_EDIT
214+
],
215+
'OR',
216+
),
217+
tag_delete: () =>
218+
hasPermission(
219+
[
220+
RoleConst.ADMIN,
221+
PermissionConst.SHARED_KNOWLEDGE_TAG_DELETE
222+
],
223+
'OR',
224+
),
225+
185226
chat_user_edit: () =>false,
186227

187228
auth: () => false,

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,16 @@ const workspaceShare = {
2222
doc_delete: () => false,
2323
doc_export: () => false,
2424
doc_download: () => false,
25+
doc_tag: () => false,
2526

2627
knowledge_chat_user_read: () => false,
2728
knowledge_chat_user_edit: () => false,
2829

30+
tag_read: () => false,
31+
tag_create: () => false,
32+
tag_delete: () => false,
33+
tag_edit: () => false,
34+
2935
problem_read: () => false,
3036
problem_create: () => false,
3137
problem_relate: () => false,

ui/src/permission/knowledge/workspace.ts

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,16 @@ const workspace = {
232232
],
233233
'OR',
234234
),
235+
doc_tag: (source_id:string) =>
236+
hasPermission(
237+
[
238+
new ComplexPermission([RoleConst.USER],[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(source_id)],[],'AND'),
239+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
240+
PermissionConst.KNOWLEDGE_DOCUMENT_TAG.getKnowledgeWorkspaceResourcePermission(source_id),
241+
PermissionConst.KNOWLEDGE_DOCUMENT_TAG.getWorkspacePermissionWorkspaceManageRole,
242+
],
243+
'OR',
244+
),
235245
knowledge_chat_user_read: (source_id:string) => false,
236246
knowledge_chat_user_edit: (source_id:string) =>
237247
hasPermission(
@@ -293,6 +303,46 @@ const workspace = {
293303
],
294304
'OR',
295305
),
306+
tag_read: (source_id:string) =>
307+
hasPermission(
308+
[
309+
new ComplexPermission([RoleConst.USER],[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(source_id)],[],'AND'),
310+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
311+
PermissionConst.KNOWLEDGE_TAG_READ.getKnowledgeWorkspaceResourcePermission(source_id),
312+
PermissionConst.KNOWLEDGE_TAG_READ.getWorkspacePermissionWorkspaceManageRole,
313+
],
314+
'OR',
315+
),
316+
tag_create: (source_id:string) =>
317+
hasPermission(
318+
[
319+
new ComplexPermission([RoleConst.USER],[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(source_id)],[],'AND'),
320+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
321+
PermissionConst.KNOWLEDGE_TAG_CREATE.getKnowledgeWorkspaceResourcePermission(source_id),
322+
PermissionConst.KNOWLEDGE_TAG_CREATE.getWorkspacePermissionWorkspaceManageRole,
323+
],
324+
'OR',
325+
),
326+
tag_edit: (source_id:string) =>
327+
hasPermission(
328+
[
329+
new ComplexPermission([RoleConst.USER],[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(source_id)],[],'AND'),
330+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
331+
PermissionConst.KNOWLEDGE_TAG_EDIT.getKnowledgeWorkspaceResourcePermission(source_id),
332+
PermissionConst.KNOWLEDGE_TAG_EDIT.getWorkspacePermissionWorkspaceManageRole,
333+
],
334+
'OR',
335+
),
336+
tag_delete: (source_id:string) =>
337+
hasPermission(
338+
[
339+
new ComplexPermission([RoleConst.USER],[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(source_id)],[],'AND'),
340+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
341+
PermissionConst.KNOWLEDGE_TAG_DELETE.getKnowledgeWorkspaceResourcePermission(source_id),
342+
PermissionConst.KNOWLEDGE_TAG_DELETE.getWorkspacePermissionWorkspaceManageRole,
343+
],
344+
'OR',
345+
),
296346
chat_user_edit: (source_id:string) =>
297347
hasPermission(
298348
[

ui/src/utils/permission/data.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,12 @@ const PermissionConst = {
120120
KNOWLEDGE_DOCUMENT_GENERATE: new Permission('KNOWLEDGE_DOCUMENT:READ+GENERATE'),
121121
KNOWLEDGE_DOCUMENT_EXPORT: new Permission('KNOWLEDGE_DOCUMENT:READ+EXPORT'),
122122
KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE: new Permission('KNOWLEDGE_DOCUMENT:READ+DOWNLOAD'),
123+
KNOWLEDGE_DOCUMENT_TAG: new Permission('KNOWLEDGE_DOCUMENT:READ+TAG'),
124+
125+
KNOWLEDGE_TAG_READ: new Permission('KNOWLEDGE_TAG:READ'),
126+
KNOWLEDGE_TAG_CREATE: new Permission('KNOWLEDGE_TAG:READ+CREATE'),
127+
KNOWLEDGE_TAG_EDIT: new Permission('KNOWLEDGE_TAG:READ+EDIT'),
128+
KNOWLEDGE_TAG_DELETE: new Permission('KNOWLEDGE_TAG:READ+DELETE'),
123129

124130
KNOWLEDGE_PROBLEM_READ: new Permission('KNOWLEDGE_PROBLEM:READ'),
125131
KNOWLEDGE_PROBLEM_CREATE: new Permission('KNOWLEDGE_PROBLEM:READ+CREATE'),
@@ -194,7 +200,13 @@ const PermissionConst = {
194200
SHARED_KNOWLEDGE_DOCUMENT_MIGRATE: new Permission('SYSTEM_KNOWLEDGE_DOCUMENT:READ+MIGRATE'),
195201
SHARED_KNOWLEDGE_DOCUMENT_EXPORT: new Permission('SYSTEM_KNOWLEDGE_DOCUMENT:READ+EXPORT'),
196202
SHARED_KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE: new Permission('SYSTEM_KNOWLEDGE_DOCUMENT:READ+DOWNLOAD'),
203+
SHARED_KNOWLEDGE_DOCUMENT_TAG: new Permission('SYSTEM_KNOWLEDGE_DOCUMENT:READ+TAG'),
197204

205+
SHARED_KNOWLEDGE_TAG_READ: new Permission('SYSTEM_KNOWLEDGE_TAG:READ'),
206+
SHARED_KNOWLEDGE_TAG_EDIT: new Permission('SYSTEM_KNOWLEDGE_TAG:READ+EDIT'),
207+
SHARED_KNOWLEDGE_TAG_CREATE: new Permission('SYSTEM_KNOWLEDGE_TAG:READ+CREATE'),
208+
SHARED_KNOWLEDGE_TAG_DELETE: new Permission('SYSTEM_KNOWLEDGE_TAG:READ+DELETE'),
209+
198210
SHARED_KNOWLEDGE_PROBLEM_READ: new Permission('SYSTEM_KNOWLEDGE_PROBLEM:READ'),
199211
SHARED_KNOWLEDGE_PROBLEM_CREATE: new Permission('SYSTEM_KNOWLEDGE_PROBLEM:READ+CREATE'),
200212
SHARED_KNOWLEDGE_PROBLEM_EDIT: new Permission('SYSTEM_KNOWLEDGE_PROBLEM:READ+EDIT'),
@@ -240,7 +252,13 @@ const PermissionConst = {
240252
RESOURCE_KNOWLEDGE_DOCUMENT_GENERATE: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_DOCUMENT:READ+GENERATE'),
241253
RESOURCE_KNOWLEDGE_DOCUMENT_EXPORT: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_DOCUMENT:READ+EXPORT'),
242254
RESOURCE_KNOWLEDGE_DOCUMENT_DOWNLOAD_SOURCE_FILE: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_DOCUMENT:READ+DOWNLOAD'),
255+
RESOURCE_KNOWLEDGE_DOCUMENT_TAG: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_DOCUMENT:READ+TAG'),
243256

257+
RESOURCE_KNOWLEDGE_TAG_READ: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_PROBLEM:READ'),
258+
RESOURCE_KNOWLEDGE_TAG_CREATE: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_PROBLEM:READ+CREATE'),
259+
RESOURCE_KNOWLEDGE_TAG_EDIT: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_PROBLEM:READ+EDIT'),
260+
RESOURCE_KNOWLEDGE_TAG_DELETE: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_PROBLEM:READ+DELETE'),
261+
244262
RESOURCE_KNOWLEDGE_PROBLEM_READ: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_PROBLEM:READ'),
245263
RESOURCE_KNOWLEDGE_PROBLEM_CREATE: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_PROBLEM:READ+CREATE'),
246264
RESOURCE_KNOWLEDGE_PROBLEM_EDIT: new Permission('SYSTEM_RESOURCE_KNOWLEDGE_PROBLEM:READ+EDIT'),

ui/src/views/document/index.vue

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
<el-dropdown-item
7575
@click="openAddTagDialog()"
7676
:disabled="multipleSelection.length === 0"
77-
v-if="permissionPrecise.doc_edit(id)"
77+
v-if="permissionPrecise.doc_tag(id)"
7878
>{{ $t('views.document.tag.addTag') }}
7979
</el-dropdown-item>
8080
<el-dropdown-item
@@ -132,7 +132,9 @@
132132
clearable
133133
/>
134134
</div>
135-
<el-button @click="openTagDrawer" class="ml-12">
135+
<el-button @click="openTagDrawer" class="ml-12"
136+
v-if="permissionPrecise.tag_read(id)"
137+
>
136138
{{ $t('views.document.tag.label') }}
137139
</el-button>
138140
</div>
@@ -479,7 +481,9 @@
479481
></AppIcon>
480482
{{ $t('views.document.generateQuestion.title') }}
481483
</el-dropdown-item>
482-
<el-dropdown-item @click="openTagSettingDrawer(row)">
484+
<el-dropdown-item @click="openTagSettingDrawer(row)"
485+
v-if="permissionPrecise.doc_tag(id)"
486+
>
483487
<AppIcon iconName="app-tag" class="color-secondary"></AppIcon>
484488

485489
{{ $t('views.document.tag.setting') }}
@@ -771,7 +775,7 @@ const MoreFilledPermission0 = (id: string) => {
771775
permissionPrecise.value.doc_migrate(id) ||
772776
(knowledgeDetail?.value.type === 1 && permissionPrecise.value.doc_sync(id)) ||
773777
(knowledgeDetail?.value.type === 2 && permissionPrecise.value.doc_sync(id)) ||
774-
permissionPrecise.value.doc_delete(id)
778+
permissionPrecise.value.doc_delete(id) || permissionPrecise.value.doc_tag(id)
775779
)
776780
}
777781
@@ -781,7 +785,8 @@ const MoreFilledPermission1 = (id: string) => {
781785
permissionPrecise.value.doc_migrate(id) ||
782786
permissionPrecise.value.doc_export(id) ||
783787
permissionPrecise.value.doc_download(id) ||
784-
permissionPrecise.value.doc_delete(id)
788+
permissionPrecise.value.doc_delete(id) ||
789+
permissionPrecise.value.doc_tag(id)
785790
)
786791
}
787792

ui/src/views/document/tag/TagDrawer.vue

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@
66
<div class="flex-between mb-16">
77
<div>
88
<el-button type="primary" @click="openCreateTagDialog()"
9+
v-if="permissionPrecise.tag_create(id)"
910
>{{ $t('views.document.tag.create') }}
1011
</el-button>
11-
<el-button :disabled="multipleSelection.length === 0" @click="batchDelete">
12+
<el-button :disabled="multipleSelection.length === 0" @click="batchDelete"
13+
v-if="permissionPrecise.tag_delete(id)"
14+
>
1215
{{ $t('common.delete') }}
1316
</el-button>
1417
</div>
@@ -37,20 +40,26 @@
3740
<div v-if="currentMouseId === row.id">
3841
<span class="mr-4">
3942
<el-tooltip effect="dark" :content="$t('views.document.tag.addValue')">
40-
<el-button type="primary" text @click.stop="openCreateTagDialog(row)">
43+
<el-button type="primary" text @click.stop="openCreateTagDialog(row)"
44+
v-if="permissionPrecise.tag_create(id)"
45+
>
4146
<AppIcon iconName="app-add-outlined" />
4247
</el-button>
4348
</el-tooltip>
4449
</span>
4550
<span class="mr-4">
4651
<el-tooltip effect="dark" :content="$t('views.document.tag.edit')">
47-
<el-button type="primary" text @click.stop="editTagKey(row)">
52+
<el-button type="primary" text @click.stop="editTagKey(row)"
53+
v-if="permissionPrecise.tag_edit(id)"
54+
>
4855
<AppIcon iconName="app-edit" />
4956
</el-button>
5057
</el-tooltip>
5158
</span>
5259
<el-tooltip effect="dark" :content="$t('common.delete')">
53-
<el-button type="primary" text @click.stop="delTag(row)">
60+
<el-button type="primary" text @click.stop="delTag(row)"
61+
v-if="permissionPrecise.tag_delete(id)"
62+
>
5463
<AppIcon iconName="app-delete" />
5564
</el-button>
5665
</el-tooltip>
@@ -69,13 +78,17 @@
6978
<template #default="{ row }">
7079
<span class="mr-4">
7180
<el-tooltip effect="dark" :content="$t('views.document.tag.editValue')">
72-
<el-button type="primary" text @click.stop="editTagValue(row)">
81+
<el-button type="primary" text @click.stop="editTagValue(row)"
82+
v-if="permissionPrecise.tag_edit(id)"
83+
>
7384
<AppIcon iconName="app-edit" />
7485
</el-button>
7586
</el-tooltip>
7687
</span>
7788
<el-tooltip effect="dark" :content="$t('common.delete')">
78-
<el-button type="primary" text @click.stop="delTagValue(row)">
89+
<el-button type="primary" text @click.stop="delTagValue(row)"
90+
v-if="permissionPrecise.tag_delete(id)"
91+
>
7992
<AppIcon iconName="app-delete" />
8093
</el-button>
8194
</el-tooltip>
@@ -95,6 +108,8 @@ import CreateTagDialog from './CreateTagDialog.vue'
95108
import { MsgConfirm } from '@/utils/message.ts'
96109
import { t } from '@/locales'
97110
import EditTagDialog from '@/views/document/tag/EditTagDialog.vue'
111+
import permissionMap from '@/permission'
112+
98113
99114
const emit = defineEmits(['refresh'])
100115
@@ -117,6 +132,10 @@ const apiType = computed(() => {
117132
}
118133
})
119134
135+
const permissionPrecise = computed(() => {
136+
return permissionMap['knowledge'][apiType.value]
137+
})
138+
120139
const loading = ref(false)
121140
const debugVisible = ref(false)
122141
const filterText = ref('')

0 commit comments

Comments
 (0)