Skip to content

Commit b919c6b

Browse files
committed
feat: Button Permission by workspace role
1 parent 28f315f commit b919c6b

File tree

13 files changed

+191
-51
lines changed

13 files changed

+191
-51
lines changed

ui/src/router/modules/3tool.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const ModelRouter = {
22
path: '/tool',
33
name: 'tool',
4-
meta: { title: 'views.tool.title', permission: 'TOOL:READ' },
4+
meta: { title: 'views.tool.title' },
55
redirect: '/tool',
66
component: () => import('@/layout/layout-template/SimpleLayout.vue'),
77
children: [

ui/src/router/modules/system.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { PermissionConst, EditionConst, RoleConst } from '@/utils/permission/data'
2+
import { ComplexPermission } from '@/utils/permission/type'
23
const systemRouter = {
34
path: '/system',
45
name: 'system',
@@ -16,6 +17,7 @@ const systemRouter = {
1617
activeMenu: '/system',
1718
parentPath: '/system',
1819
parentName: 'system',
20+
permission: [RoleConst.ADMIN,EditionConst.IS_EE],
1921
},
2022
component: () => import('@/views/user-manage/index.vue'),
2123
},
@@ -78,7 +80,7 @@ const systemRouter = {
7880
activeMenu: '/system',
7981
parentPath: '/system',
8082
parentName: 'system',
81-
permission: [EditionConst.IS_EE],
83+
permission:[new ComplexPermission([RoleConst.ADMIN,RoleConst.WORKSPACE_MANAGE.getWorkspaceRole],[PermissionConst.ROLE_READ],[EditionConst.IS_EE],'OR'),],
8284
},
8385
component: () => import('@/views/role/index.vue'),
8486
},
@@ -92,7 +94,7 @@ const systemRouter = {
9294
activeMenu: '/system',
9395
parentPath: '/system',
9496
parentName: 'system',
95-
permission: [EditionConst.IS_EE],
97+
permission:[new ComplexPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.ADMIN],[PermissionConst.WORKSPACE_WORKSPACE_READ],[EditionConst.IS_EE],'OR'),],
9698
},
9799
component: () => import('@/views/workspace/index.vue'),
98100
},
@@ -154,7 +156,7 @@ const systemRouter = {
154156
activeMenu: '/system',
155157
parentPath: '/system',
156158
parentName: 'system',
157-
permission: [EditionConst.IS_PE, EditionConst.IS_EE],
159+
permission:[new ComplexPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.ADMIN],[PermissionConst.WORKSPACE_USER_GROUP_READ],[EditionConst.IS_EE,EditionConst.IS_PE],'OR'),],
158160
},
159161
children: [
160162
{
@@ -165,6 +167,7 @@ const systemRouter = {
165167
activeMenu: '/system',
166168
parentPath: '/system',
167169
parentName: 'system',
170+
permission:[new ComplexPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.ADMIN],[PermissionConst.WORKSPACE_CHAT_USER_READ],[EditionConst.IS_EE,EditionConst.IS_PE],'OR'),],
168171
},
169172
component: () => import('@/views/system-chat-user/user-manage/index.vue'),
170173
},
@@ -176,6 +179,7 @@ const systemRouter = {
176179
activeMenu: '/system',
177180
parentPath: '/system',
178181
parentName: 'system',
182+
permission:[new ComplexPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.ADMIN],[PermissionConst.WORKSPACE_USER_GROUP_READ],[EditionConst.IS_EE,EditionConst.IS_PE],'OR'),],
179183
},
180184
component: () => import('@/views/system-chat-user/group/index.vue'),
181185
},
@@ -187,6 +191,8 @@ const systemRouter = {
187191
activeMenu: '/system',
188192
parentPath: '/system',
189193
parentName: 'system',
194+
permission:[new ComplexPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,RoleConst.ADMIN],
195+
[PermissionConst.CHAT_USER_AUTH_READ],[EditionConst.IS_EE,EditionConst.IS_PE],'OR'),],
190196
},
191197
component: () => import('@/views/system-chat-user/authentication/index.vue'),
192198
},

ui/src/utils/permission/data.ts

Lines changed: 62 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,61 @@ import { Permission, Role, Edition } from '@/utils/permission/type'
2626
// CLEAR_POLICY = "READ+CLEAR_POLICY"
2727
const PermissionConst = {
2828
USER_READ: new Permission('USER:READ'),
29-
USER_CREATE: new Permission('USER:CREATE'),
29+
USER_CREATE: new Permission('USER:READ+CREATE'),
30+
USER_EDIT: new Permission('USER:READ+EDIT'),
31+
USER_DELETE: new Permission('USER:READ+DELETE'),
32+
33+
WORKSPACE_USER_RESOURCE_PERMISSION_READ: new Permission('WORKSPACE_USER_RESOURCE_PERMISSION:READ'),
34+
WORKSPACE_USER_RESOURCE_PERMISSION_EDIT: new Permission('WORKSPACE_USER_RESOURCE_PERMISSION:READ+EDIT'),
35+
36+
WORKSPACE_ROLE_READ: new Permission('WORKSPACE_ROLE:READ'),
37+
WORKSPACE_ROLE_ADD_MEMBER: new Permission('WORKSPACE_ROLE:READ+ADD_MEMBER'),
38+
WORKSPACE_ROLE_REMOVE_MEMBER: new Permission('WORKSPACE_ROLE:READ+REMOVE_MEMBER'),
39+
40+
WORKSPACE_READ: new Permission('WORKSPACE:READ'),
41+
WORKSPACE_CREATE: new Permission('WORKSPACE:READ+CREATE'),
42+
WORKSPACE_EDIT: new Permission('WORKSPACE:READ+EDIT'),
43+
WORKSPACE_DELETE: new Permission('WORKSPACE:READ+DELETE'),
44+
WORKSPACE_ADD_MEMBER: new Permission('WORKSPACE:READ+ADD_MEMBER'),
45+
WORKSPACE_REMOVE_MEMBER: new Permission('WORKSPACE:READ+REMOVE_MEMBER'),
46+
47+
WORKSPACE_WORKSPACE_READ: new Permission('WORKSPACE_WORKSPACE:READ'),
48+
WORKSPACE_WORKSPACE_ADD_MEMBER: new Permission('WORKSPACE:READ+ADD_MEMBER'),
49+
WORKSPACE_WORKSPACE_REMOVE_MEMBER: new Permission('WORKSPACE:READ+REMOVE_MEMBER'),
50+
51+
WORKSPACE_CHAT_USER_READ: new Permission('WORKSPACE_CHAT_USER:READ'),
52+
WORKSPACE_CHAT_USER_CREATE: new Permission('WORKSPACE_CHAT_USER:READ+CREATE'),
53+
WORKSPACE_CHAT_USER_EDIT: new Permission('WORKSPACE_CHAT_USER:READ+EDIT'),
54+
WORKSPACE_CHAT_USER_DELETE: new Permission('WORKSPACE_CHAT_USER:READ+DELETE'),
55+
WORKSPACE_CHAT_USER_GROUP: new Permission('WORKSPACE_CHAT_USER:READ+USER_GROUP'),
56+
57+
WORKSPACE_USER_GROUP_READ: new Permission('WORKSPACE_USER_GROUP:READ'),
58+
WORKSPACE_USER_GROUP_CREATE: new Permission('WORKSPACE_USER_GROUP:READ+CREATE'),
59+
WORKSPACE_USER_GROUP_EDIT: new Permission('WORKSPACE_USER_GROUP:READ+EDIT'),
60+
WORKSPACE_USER_GROUP_DELETE: new Permission('WORKSPACE_USER_GROUP:READ+DELETE'),
61+
WORKSPACE_USER_GROUP_ADD_MEMBER: new Permission('WORKSPACE_USER_GROUP:READ+ADD_MEMBER'),
62+
WORKSPACE_USER_GROUP_REMOVE_MEMBER: new Permission('WORKSPACE_USER_GROUP:READ+REMOVE_MEMBER'),
63+
64+
CHAT_USER_AUTH_READ:new Permission('CHAT_USER_AUTH:READ'),
65+
CHAT_USER_AUTH_EDIT:new Permission('CHAT_USER_AUTH:READ+EDIT'),
66+
67+
CHAT_USER_READ: new Permission('CHAT_USER:READ'),
68+
CHAT_USER_CREATE: new Permission('CHAT_USER:READ+CREATE'),
69+
CHAT_USER_SYNC: new Permission('CHAT_USER:READ+SYNC'),
70+
CHAT_USER_EDIT: new Permission('CHAT_USER:READ+EDIT'),
71+
CHAT_USER_DELETE: new Permission('CHAT_USER:READ+DELETE'),
72+
CHAT_USER_GROUP: new Permission('CHAT_USER:READ+USER_GROUP'),
73+
74+
USER_GROUP_READ: new Permission('USER_GROUP:READ'),
75+
76+
77+
ROLE_READ: new Permission('ROLE:READ'),
78+
ROLE_CREATE: new Permission('ROLE:READ'),
79+
ROLE_EDIT: new Permission('ROLE:READ'),
80+
ROLE_DELETE: new Permission('ROLE:READ'),
81+
ROLE_ADD_MEMBER: new Permission('ROLE:READ'),
82+
ROLE_REMOVE_MEMBER: new Permission('ROLE:READ'),
83+
3084

3185
KNOWLEDGE_READ: new Permission('KNOWLEDGE:READ'),
3286
KNOWLEDGE_CREATE: new Permission('KNOWLEDGE:READ+CREATE'),
@@ -38,6 +92,7 @@ const PermissionConst = {
3892

3993
KNOWLEDGE_DOCUMENT_READ:new Permission('KNOWLEDGE_DOCUMENT:READ'),
4094
KNOWLEDGE_DOCUMENT_CREATE:new Permission('KNOWLEDGE_DOCUMENT:READ+CREATE'),
95+
KNOWLEDGE_DOCUMENT_DELETE:new Permission('KNOWLEDGE_DOCUMENT:READ+DELETE'),
4196
KNOWLEDGE_DOCUMENT_EDIT:new Permission('KNOWLEDGE_DOCUMENT:READ+EDIT'),
4297
KNOWLEDGE_DOCUMENT_SYNC:new Permission('KNOWLEDGE_DOCUMENT:READ+SYNC'),
4398
KNOWLEDGE_DOCUMENT_MIGRATE:new Permission('KNOWLEDGE_DOCUMENT:READ+MIGRATE'),
@@ -60,19 +115,19 @@ const PermissionConst = {
60115
APPLICATION_EXPORT:new Permission('APPLICATION:READ+EXPORT'),
61116
APPLICATION_DELETE:new Permission('APPLICATION:READ+DELETE'),
62117
APPLICATION_EDIT:new Permission('APPLICATION:READ+EDIT'),
63-
118+
64119
APPLICATION_OVERVIEW_READ:new Permission('OVERVIEW:READ'),
65120
APPLICATION_OVERVIEW_EMBEDDED:new Permission('OVERVIEW:READ'),
66121
APPLICATION_OVERVIEW_ACCESS:new Permission('OVERVIEW:READ'),
67122
APPLICATION_OVERVIEW_DISPLAY:new Permission('OVERVIEW:READ'),
68123
APPLICATION_OVERVIEW_API_KEY:new Permission('OVERVIEW:READ'),
69124
APPLICATION_OVERVIEW_PUBLIC:new Permission('OVERVIEW:READ'),
70125

71-
APPLICATION_CHAT_LOG:new Permission('APPLICATION_CHAT_LOG:READ'),
72-
APPLICATION_CHAT_LOG_ANNOTATION:new Permission('APPLICATION_CHAT_LOG:READ+ANNOTATION'),
126+
APPLICATION_CHAT_LOG:new Permission('APPLICATION_CHAT_LOG:READ'),
127+
APPLICATION_CHAT_LOG_ANNOTATION:new Permission('APPLICATION_CHAT_LOG:READ+ANNOTATION'),
73128
APPLICATION_CHAT_LOG_EXPORT:new Permission('APPLICATION_CHAT_LOG:READ+EXPORT'),
74129
APPLICATION_CHAT_LOG_POLICY:new Permission('APPLICATION_CHAT_LOG:READ+CLEAR_POLICY'),
75-
130+
76131
APPLICATION_ACCESS_READ:new Permission('APPLICATION_CHAT_LOG:READ'),
77132
APPLICATION_ACCESS_EDIT:new Permission('APPLICATION_CHAT_LOG:READ+EDIT'),
78133

@@ -100,10 +155,8 @@ const PermissionConst = {
100155
RESOURCE_TOOL_IMPORT:new Permission('SYSTEM_RES_TOOL:READ+IMPORT'),
101156
RESOURCE_TOOL_EXPORT:new Permission('SYSTEM_RES_TOOL:READ+EXPORT'),
102157

103-
WORKSPACE_ROLE_READ:new Permission('WORKSAPCE_ROLE:READ'),
104-
WORKSPACE_ROLE_ADD_MEMBER:new Permission('WORKSAPCE_ROLE:READ+ADD_MEMBER'),
105-
WORKSPACE_ROLE_REMOVE_MEMBER:new Permission('WORKSAPCE_ROLE:READ+REMOVE_MEMBER'),
106-
158+
159+
107160

108161

109162

ui/src/utils/permission/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ const hasPermissionChild = (
4545
const roleOk = roleList.some((r) =>
4646
role.includes(isFunction(r) ? (r as CRF)().toString() : r.toString()),
4747
)
48-
const editionOK = permission.editionList.includes(edition.toString())
48+
const editionList= permission.editionList
49+
const editionOK = permission.editionList.length>0?editionList.some(e=>edition.toString()==e.toString()):true
4950

5051
return permission.compare === 'AND'
5152
? permissionOk && roleOk && editionOK

ui/src/views/document/index.vue

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,6 @@
6969
<el-dropdown>
7070
<el-button
7171
class="ml-12 mr-12"
72-
v-hasPermission="[
73-
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
74-
PermissionConst.KNOWLEDGE_DOCUMENT_EDIT.getWorkspacePermission,
75-
]"
7672
>
7773
<el-icon><MoreFilled /></el-icon>
7874
</el-button>
@@ -81,14 +77,16 @@
8177
<el-dropdown-item
8278
@click="openBatchEditDocument"
8379
:disabled="multipleSelection.length === 0"
80+
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_EDIT.getWorkspacePermission],'OR')"
8481
>
8582
{{ $t('common.setting') }}
8683
</el-dropdown-item>
8784
<el-dropdown-item
8885
divided
8986
@click="syncMulDocument"
9087
:disabled="multipleSelection.length === 0"
91-
v-if="knowledgeDetail.type === 1"
88+
v-if="knowledgeDetail.type === 1 &&
89+
hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_SYNC.getWorkspacePermission],'OR')"
9290
>{{ $t('views.document.syncDocument') }}
9391
</el-dropdown-item>
9492
<el-dropdown-item
@@ -439,30 +437,41 @@
439437
v-if="
440438
([State.STARTED, State.PENDING] as Array<string>).includes(
441439
getTaskState(row.status, TaskType.GENERATE_PROBLEM),
442-
)
440+
)&&
441+
hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_PROBLEM_CREATE.getWorkspacePermission],'OR')
443442
"
444443
@click="cancelTask(row, TaskType.GENERATE_PROBLEM)"
445444
>
446445
<el-icon><Connection /></el-icon>
447446
{{ $t('views.document.setting.cancelGenerateQuestion') }}
448447
</el-dropdown-item>
449-
<el-dropdown-item v-else @click="openGenerateDialog(row)">
448+
<el-dropdown-item v-else @click="openGenerateDialog(row)"
449+
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_PROBLEM_CREATE.getWorkspacePermission],'OR')"
450+
>
450451
<el-icon><Connection /></el-icon>
451452
{{ $t('views.document.generateQuestion.title') }}
452453
</el-dropdown-item>
453-
<el-dropdown-item @click="openknowledgeDialog(row)">
454+
<el-dropdown-item @click="openknowledgeDialog(row)"
455+
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_MIGRATE.getWorkspacePermission],'OR')"
456+
>
454457
<AppIcon iconName="app-migrate"></AppIcon>
455458
{{ $t('views.document.setting.migration') }}
456459
</el-dropdown-item>
457-
<el-dropdown-item @click="exportDocument(row)">
460+
<el-dropdown-item @click="exportDocument(row)"
461+
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_EXPORT.getWorkspacePermission],'OR')"
462+
>
458463
<AppIcon iconName="app-export"></AppIcon>
459464
{{ $t('views.document.setting.export') }} Excel
460465
</el-dropdown-item>
461-
<el-dropdown-item @click="exportDocumentZip(row)">
466+
<el-dropdown-item @click="exportDocumentZip(row)"
467+
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_EXPORT.getWorkspacePermission],'OR')"
468+
>
462469
<AppIcon iconName="app-export"></AppIcon>
463470
{{ $t('views.document.setting.export') }} Zip
464471
</el-dropdown-item>
465-
<el-dropdown-item icon="Delete" @click.stop="deleteDocument(row)">
472+
<el-dropdown-item icon="Delete" @click.stop="deleteDocument(row)"
473+
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_DOCUMENT_DELETE.getWorkspacePermission],'OR')"
474+
>
466475
{{ $t('common.delete') }}</el-dropdown-item
467476
>
468477
</el-dropdown-menu>

ui/src/views/knowledge/index.vue

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -237,9 +237,8 @@
237237
<el-dropdown-item
238238
icon="Refresh"
239239
@click.stop="syncKnowledge(item)"
240-
v-if="item.type === 1 ||
241-
hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_SYNC.getWorkspacePermission],'OR')
242-
"
240+
v-if="item.type === 1 &&
241+
hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_SYNC.getWorkspacePermission],'OR')"
243242
>{{ $t('views.knowledge.setting.sync') }}
244243
</el-dropdown-item>
245244
<el-dropdown-item @click.stop="reEmbeddingKnowledge(item)"

ui/src/views/role/component/Member.vue

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
<template>
22
<div class="p-24 pt-0">
33
<div class="flex-between mb-16">
4-
<el-button type="primary" @click="handleAdd">
4+
<el-button type="primary" @click="handleAdd"
5+
v-hasPermission="new ComplexPermission([RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole],
6+
[PermissionConst.ROLE_ADD_MEMBER.getWorkspacePermission],[], 'OR')"
7+
>
58
{{ $t('views.role.member.add') }}
69
</el-button>
710
<div class="flex complex-search">
@@ -40,7 +43,10 @@
4043
:content="`${$t('views.role.member.delete.button')}`"
4144
placement="top"
4245
>
43-
<el-button type="primary" text @click.stop="handleDelete(row)">
46+
<el-button type="primary" text @click.stop="handleDelete(row)"
47+
v-hasPermission="new ComplexPermission([RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole],
48+
[PermissionConst.ROLE_REMOVE_MEMBER.getWorkspacePermission],[], 'OR')"
49+
>
4450
<el-icon>
4551
<Delete />
4652
</el-icon>
@@ -62,7 +68,8 @@ import { t } from '@/locales'
6268
import AddMemberDrawer from './AddMemberDrawer.vue'
6369
import { RoleTypeEnum } from '@/enums/system'
6470
import { loadPermissionApi } from '@/utils/permission-api'
65-
71+
import { PermissionConst, RoleConst } from '@/utils/permission/data'
72+
import { ComplexPermission } from '@/utils/permission/type'
6673
const props = defineProps<{
6774
currentRole?: RoleItem
6875
}>()

ui/src/views/role/index.vue

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,10 @@
6060
:content="`${$t('common.create')}${$t('views.role.customRole')}`"
6161
placement="top"
6262
>
63-
<el-button type="primary" text @click="createOrUpdateRole()">
63+
<el-button type="primary" text @click="createOrUpdateRole()"
64+
v-hasPermission="new ComplexPermission([RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole],
65+
[PermissionConst.ROLE_CREATE.getWorkspacePermission],[], 'OR')"
66+
>
6467
<AppIcon iconName="app-copy"></AppIcon>
6568
</el-button>
6669
</el-tooltip>
@@ -160,6 +163,8 @@ import { RoleTypeEnum } from '@/enums/system'
160163
import { roleTypeMap } from './index'
161164
import { MsgSuccess, MsgConfirm } from '@/utils/message'
162165
import { loadPermissionApi } from '@/utils/permission-api'
166+
import { PermissionConst, RoleConst } from '@/utils/permission/data'
167+
import { ComplexPermission } from '@/utils/permission/type'
163168
164169
const filterText = ref('')
165170
const loading = ref(false)

0 commit comments

Comments
 (0)