Skip to content

Commit 1482d86

Browse files
feat: Folder button permission (#3520)
Co-authored-by: zhangzhanwei <[email protected]>
1 parent 49d40bb commit 1482d86

File tree

14 files changed

+179
-16
lines changed

14 files changed

+179
-16
lines changed

ui/src/components/folder-tree/index.vue

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,19 +57,22 @@
5757
<el-dropdown-menu>
5858
<el-dropdown-item
5959
@click.stop="openCreateFolder(data)"
60-
v-if="node.level !== 3"
60+
v-if="node.level !== 3 && permissionPrecise.folderCreate()"
6161
>
6262
<AppIcon iconName="app-add-folder"></AppIcon>
6363
{{ $t('components.folder.addChildFolder') }}
6464
</el-dropdown-item>
65-
<el-dropdown-item @click.stop="openEditFolder(data)">
65+
<el-dropdown-item @click.stop="openEditFolder(data)"
66+
v-if="permissionPrecise.folderEdit()"
67+
>
6668
<el-icon><EditPen /></el-icon>
6769
{{ $t('common.edit') }}
6870
</el-dropdown-item>
6971
<el-dropdown-item
7072
divided
7173
@click.stop="deleteFolder(data)"
7274
:disabled="!data.parent_id"
75+
v-if="permissionPrecise.folderDelete()"
7376
>
7477
<el-icon><Delete /></el-icon>
7578
{{ $t('common.delete') }}
@@ -88,7 +91,7 @@
8891
</template>
8992

9093
<script lang="ts" setup>
91-
import { ref, watch } from 'vue'
94+
import { computed, ref, watch } from 'vue'
9295
import { onBeforeRouteLeave } from 'vue-router'
9396
import type { TreeInstance } from 'element-plus'
9497
import CreateFolderDialog from '@/components/folder-tree/CreateFolderDialog.vue'
@@ -99,6 +102,7 @@ import { hasPermission } from '@/utils/permission/index'
99102
import useStore from '@/stores'
100103
import { TreeToFlatten } from '@/utils/array'
101104
import { MsgConfirm } from '@/utils/message'
105+
import permissionMap from '@/permission'
102106
103107
defineOptions({ name: 'FolderTree' })
104108
const props = defineProps({
@@ -131,6 +135,21 @@ const props = defineProps({
131135
default: () => ({}),
132136
},
133137
})
138+
const resourceType = computed(() => {
139+
if (props.source === 'APPLICATION') {
140+
return 'application'
141+
} else if (props.source === 'KNOWLEDGE') {
142+
return 'knowledge'
143+
} else if (props.source === 'MODEL') {
144+
return 'model'
145+
} else if (props.source === 'TOOL') {
146+
return 'tool'
147+
}
148+
})
149+
150+
const permissionPrecise = computed(() => {
151+
return permissionMap[resourceType.value!]['workspace']
152+
})
134153
135154
const { folder } = useStore()
136155
onBeforeRouteLeave((to, from) => {

ui/src/permission/application/workspace.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,16 @@ const workspace = {
1313
],
1414
'OR'
1515
),
16+
folderCreate: () =>
17+
hasPermission(
18+
[
19+
RoleConst.USER.getWorkspaceRole,
20+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
21+
PermissionConst.APPLICATION_CREATE.getWorkspacePermission,
22+
PermissionConst.APPLICATION_CREATE.getWorkspacePermissionWorkspaceManageRole,
23+
],
24+
'OR'
25+
),
1626
edit: (source_id:string) =>
1727
hasPermission(
1828
[
@@ -23,6 +33,16 @@ const workspace = {
2333
],
2434
'OR'
2535
),
36+
folderEdit: () =>
37+
hasPermission(
38+
[
39+
RoleConst.USER.getWorkspaceRole,
40+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
41+
PermissionConst.APPLICATION_EDIT.getWorkspacePermissionWorkspaceManageRole,
42+
PermissionConst.APPLICATION_EDIT.getWorkspacePermission
43+
],
44+
'OR'
45+
),
2646
export: (source_id:string) =>
2747
hasPermission(
2848
[
@@ -43,6 +63,16 @@ const workspace = {
4363
],
4464
'OR'
4565
),
66+
folderDelete: () =>
67+
hasPermission(
68+
[
69+
RoleConst.USER.getWorkspaceRole,
70+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
71+
PermissionConst.APPLICATION_DELETE.getWorkspacePermissionWorkspaceManageRole,
72+
PermissionConst.APPLICATION_DELETE.getWorkspacePermission
73+
],
74+
'OR'
75+
),
4676
overview_embed: (source_id:string) =>
4777
hasPermission(
4878
[

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const systemManage = {
1616
sync: () => false,
1717
vector: () => false,
1818
generate: () => false,
19-
setting: () => false,
19+
edit: () => false,
2020
export: () => false,
2121
delete: () => false,
2222

@@ -35,6 +35,10 @@ const systemManage = {
3535
problem_create: () => false,
3636
problem_relate: () => false,
3737
problem_delete: () => false,
38+
39+
folderCreate: () => false,
40+
folderEdit: () => false,
41+
folderDelete: () => false,
3842
}
3943

4044
export default systemManage

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ const share = {
3535
],
3636
'OR'
3737
),
38-
setting: () =>
38+
edit: () =>
3939
hasPermission (
4040
[
4141
RoleConst.ADMIN,
@@ -165,6 +165,8 @@ const share = {
165165
],
166166
'OR'
167167
),
168-
168+
folderCreate: () => false,
169+
folderEdit: () => false,
170+
folderDelete: () => false,
169171
}
170172
export default share

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const workspaceShare = {
77
sync: () => false,
88
vector: () => false,
99
generate: () => false,
10-
setting: () => false,
10+
edit: () => false,
1111
export: () => false,
1212
delete: () => false,
1313

@@ -26,6 +26,10 @@ const workspaceShare = {
2626
problem_create: () => false,
2727
problem_relate: () => false,
2828
problem_delete: () => false,
29+
30+
folderCreate: () => false,
31+
folderEdit: () => false,
32+
folderDelete: () => false,
2933
}
3034

31-
export default workspaceShare
35+
export default workspaceShare

ui/src/permission/knowledge/workspace.ts

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,16 @@ const workspace = {
2020
],
2121
'OR',
2222
),
23+
folderCreate: () =>
24+
hasPermission(
25+
[
26+
RoleConst.USER.getWorkspaceRole,
27+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
28+
PermissionConst.KNOWLEDGE_CREATE.getWorkspacePermission,
29+
PermissionConst.KNOWLEDGE_CREATE.getWorkspacePermissionWorkspaceManageRole,
30+
],
31+
'OR',
32+
),
2333
sync: (source_id:string) =>
2434
hasPermission(
2535
[
@@ -50,7 +60,7 @@ const workspace = {
5060
],
5161
'OR',
5262
),
53-
setting: (source_id:string) =>
63+
edit: (source_id:string) =>
5464
hasPermission(
5565
[
5666
new ComplexPermission([RoleConst.USER],[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(source_id)],[],'AND'),
@@ -60,6 +70,16 @@ const workspace = {
6070
],
6171
'OR',
6272
),
73+
folderEdit: () =>
74+
hasPermission(
75+
[
76+
RoleConst.USER.getWorkspaceRole,
77+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
78+
PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermission,
79+
PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermissionWorkspaceManageRole,
80+
],
81+
'OR',
82+
),
6383
export: (source_id:string) =>
6484
hasPermission(
6585
[
@@ -80,6 +100,16 @@ const workspace = {
80100
],
81101
'OR',
82102
),
103+
folderDelete: () =>
104+
hasPermission(
105+
[
106+
RoleConst.USER.getWorkspaceRole,
107+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
108+
PermissionConst.KNOWLEDGE_DELETE.getWorkspacePermission,
109+
PermissionConst.KNOWLEDGE_DELETE.getWorkspacePermissionWorkspaceManageRole,
110+
],
111+
'OR',
112+
),
83113
doc_create: (source_id:string) =>
84114
hasPermission(
85115
[

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,14 @@ const systemManage = {
1212
),
1313
'OR',
1414
),
15-
addModel: () => false,
15+
create: () => false,
1616
modify: () => false,
1717
paramSetting: () => false,
1818
delete: () => false,
19+
20+
folderCreate: () => false,
21+
folderEdit: () => false,
22+
folderDelete: () => false,
1923
}
2024

2125
export default systemManage

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { ComplexPermission } from '@/utils/permission/type'
33
import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data'
44
const share = {
55
is_share: () => false,
6-
addModel: () =>
6+
create: () =>
77
hasPermission(
88
[
99
RoleConst.ADMIN,
@@ -35,5 +35,8 @@ const share = {
3535
],
3636
'OR',
3737
),
38+
folderCreate: () => false,
39+
folderEdit: () => false,
40+
folderDelete: () => false,
3841
}
3942
export default share

ui/src/permission/model/workspace.ts

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,17 @@ const workspace = {
1010
[EditionConst.IS_EE],'OR'),
1111
'OR',
1212
),
13-
addModel: () =>
13+
create: () =>
14+
hasPermission(
15+
[
16+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
17+
RoleConst.USER.getWorkspaceRole,
18+
PermissionConst.MODEL_CREATE.getWorkspacePermission,
19+
PermissionConst.MODEL_CREATE.getWorkspacePermissionWorkspaceManageRole
20+
],
21+
'OR'
22+
),
23+
folderCreate: () =>
1424
hasPermission(
1525
[
1626
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
@@ -30,6 +40,16 @@ const workspace = {
3040
],
3141
'OR'
3242
),
43+
folderEdit: () =>
44+
hasPermission(
45+
[
46+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
47+
RoleConst.USER.getWorkspaceRole,
48+
PermissionConst.MODEL_EDIT.getWorkspacePermission,
49+
PermissionConst.MODEL_EDIT.getWorkspacePermissionWorkspaceManageRole
50+
],
51+
'OR'
52+
),
3353
paramSetting: (source_id:string) =>
3454
hasPermission(
3555
[
@@ -50,6 +70,16 @@ const workspace = {
5070
],
5171
'OR'
5272
),
73+
folderDelete: () =>
74+
hasPermission(
75+
[
76+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
77+
RoleConst.USER.getWorkspaceRole,
78+
PermissionConst.MODEL_DELETE.getWorkspacePermission,
79+
PermissionConst.MODEL_DELETE.getWorkspacePermissionWorkspaceManageRole
80+
],
81+
'OR'
82+
),
5383
}
5484

5585
export default workspace

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ const systemManage = {
2020
export: () => false,
2121
debug: () => false,
2222

23+
folderCreate: () => false,
24+
folderEdit: () => false,
25+
folderDelete: () => false,
26+
2327
}
2428

2529
export default systemManage

0 commit comments

Comments
 (0)