Skip to content

Commit 59b744d

Browse files
committed
feat: System role permission
1 parent 91dbe19 commit 59b744d

File tree

6 files changed

+79
-28
lines changed

6 files changed

+79
-28
lines changed

ui/src/router/modules/system.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ const systemRouter = {
3535
permission: [
3636
new ComplexPermission(
3737
[RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole],
38-
[PermissionConst.ROLE_READ],
38+
[PermissionConst.ROLE_READ, PermissionConst.WORKSPACE_ROLE_READ],
3939
[EditionConst.IS_EE],
4040
'OR',
4141
),
@@ -57,7 +57,7 @@ const systemRouter = {
5757
new ComplexPermission(
5858
[RoleConst.WORKSPACE_MANAGE, RoleConst.ADMIN],
5959
[
60-
PermissionConst.WORKSPACE_READ.getWorkspacePermissionWorkspaceManageRole,
60+
PermissionConst.WORKSPACE_WORKSPACE_READ,
6161
PermissionConst.WORKSPACE_READ,
6262
],
6363
[EditionConst.IS_EE],

ui/src/utils/dynamics-api/permission-api.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { PermissionConst, EditionConst, RoleConst } from '@/utils/permission/dat
22
import { hasPermission } from '@/utils/permission/index'
33
import roleSystemApi from '@/api/system/role'
44
import roleWorkspaceApi from '@/api/workspace/role'
5+
import { ComplexPermission } from '../permission/type'
56

67
// 系统管理员 API
78
const systemApiMap = {
@@ -19,11 +20,19 @@ const workspaceApiMap = {
1920

2021
export function loadPermissionApi(type: string) {
2122
if (hasPermission(EditionConst.IS_EE, 'OR')) {
22-
if (hasPermission([RoleConst.ADMIN], 'OR')) {
23-
// 加载企业版工作空间管理员 API
24-
return systemApiMap[type]
25-
} else if (hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole], 'OR')) {
23+
if (hasPermission(new ComplexPermission (
24+
[RoleConst.ADMIN],
25+
[PermissionConst.ROLE_READ],
26+
[],
27+
'OR'),'OR')) {
2628
// 加载系统管理员 API
29+
return systemApiMap[type]
30+
} if (hasPermission(new ComplexPermission (
31+
[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole],
32+
[PermissionConst.WORKSPACE_ROLE_READ.getWorkspacePermissionWorkspaceManageRole],
33+
[],
34+
'OR'),'OR' )) {
35+
// 加载企业版工作空间管理员 API
2736
return workspaceApiMap[type]
2837
}
2938
}

ui/src/utils/permission/data.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,11 @@ const PermissionConst = {
7575

7676

7777
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'),
78+
ROLE_CREATE: new Permission('ROLE:READ+CREATE'),
79+
ROLE_EDIT: new Permission('ROLE:READ+EDIT'),
80+
ROLE_DELETE: new Permission('ROLE:READ+DELETE'),
81+
ROLE_ADD_MEMBER: new Permission('ROLE:READ+ADD_MEMBER'),
82+
ROLE_REMOVE_MEMBER: new Permission('ROLE:READ+REMOVE_MEMBER'),
8383

8484

8585
KNOWLEDGE_READ: new Permission('KNOWLEDGE:READ'),

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@
66
@click="handleAdd"
77
v-hasPermission="
88
new ComplexPermission(
9-
[RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole],
10-
[PermissionConst.ROLE_ADD_MEMBER.getWorkspacePermission],
9+
[RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE],
10+
[PermissionConst.WORKSPACE_ROLE_ADD_MEMBER, PermissionConst.ROLE_ADD_MEMBER],
1111
[],
1212
'OR',
13-
)
14-
"
13+
)"
1514
>
1615
{{ $t('views.role.member.add') }}
1716
</el-button>
@@ -57,8 +56,8 @@
5756
@click.stop="handleDelete(row)"
5857
v-hasPermission="
5958
new ComplexPermission(
60-
[RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole],
61-
[PermissionConst.ROLE_REMOVE_MEMBER.getWorkspacePermission],
59+
[RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE],
60+
[PermissionConst.ROLE_REMOVE_MEMBER, PermissionConst.WORKSPACE_ROLE_REMOVE_MEMBER],
6261
[],
6362
'OR',
6463
)

ui/src/views/system/role/index.vue

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,27 @@
3737
</el-button>
3838
<template #dropdown>
3939
<el-dropdown-menu style="min-width: 80px">
40-
<el-dropdown-item @click.stop="createOrUpdateRole(row)" class="p-8">
40+
<el-dropdown-item @click.stop="createOrUpdateRole(row)" class="p-8"
41+
v-if="hasPermission(
42+
new ComplexPermission(
43+
[RoleConst.ADMIN],
44+
[PermissionConst.ROLE_EDIT],
45+
[],'OR'
46+
),'OR'
47+
)"
48+
>
4149
<el-icon><EditPen /></el-icon>
4250
{{ $t('common.rename') }}
4351
</el-dropdown-item>
44-
<el-dropdown-item @click.stop="deleteRole(row)" class="border-t p-8">
52+
<el-dropdown-item @click.stop="deleteRole(row)" class="border-t p-8"
53+
v-if="hasPermission(
54+
new ComplexPermission(
55+
[RoleConst.ADMIN],
56+
[PermissionConst.ROLE_DELETE],
57+
[],'OR'
58+
),'OR'
59+
)"
60+
>
4561
<el-icon><Delete /></el-icon>
4662
{{ $t('common.delete') }}
4763
</el-dropdown-item>
@@ -69,12 +85,10 @@
6985
@click="createOrUpdateRole()"
7086
v-hasPermission="
7187
new ComplexPermission(
72-
[RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE.getWorkspaceRole],
73-
[PermissionConst.ROLE_CREATE.getWorkspacePermission],
88+
[RoleConst.ADMIN],
89+
[PermissionConst.ROLE_CREATE],
7490
[],
75-
'OR',
76-
)
77-
"
91+
'OR',)"
7892
>
7993
<el-icon :size="18"><Plus /></el-icon>
8094
</el-button>
@@ -104,11 +118,27 @@
104118
</el-button>
105119
<template #dropdown>
106120
<el-dropdown-menu style="min-width: 80px">
107-
<el-dropdown-item @click.stop="createOrUpdateRole(row)" class="p-8">
121+
<el-dropdown-item @click.stop="createOrUpdateRole(row)" class="p-8"
122+
v-if="hasPermission(
123+
new ComplexPermission(
124+
[RoleConst.ADMIN],
125+
[PermissionConst.ROLE_EDIT],
126+
[],'OR'
127+
),'OR'
128+
)"
129+
>
108130
<el-icon><EditPen /></el-icon>
109131
{{ $t('common.rename') }}
110132
</el-dropdown-item>
111-
<el-dropdown-item @click.stop="deleteRole(row)" class="border-t p-8">
133+
<el-dropdown-item @click.stop="deleteRole(row)" class="border-t p-8"
134+
v-if="hasPermission(
135+
new ComplexPermission(
136+
[RoleConst.ADMIN],
137+
[PermissionConst.ROLE_DELETE],
138+
[],'OR'
139+
),'OR'
140+
)"
141+
>
112142
<el-icon><Delete /></el-icon>
113143
{{ $t('common.delete') }}
114144
</el-dropdown-item>
@@ -178,6 +208,7 @@ import { MsgSuccess, MsgConfirm } from '@/utils/message'
178208
import { loadPermissionApi } from '@/utils/dynamics-api/permission-api'
179209
import { PermissionConst, RoleConst } from '@/utils/permission/data'
180210
import { ComplexPermission } from '@/utils/permission/type'
211+
import { hasPermission } from '@/utils/permission/index'
181212
182213
const filterText = ref('')
183214
const loading = ref(false)

ui/src/views/system/workspace/component/Member.vue

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@
33
<el-button
44
type="primary"
55
@click="handleAdd"
6-
v-hasPermission="[RoleConst.ADMIN, PermissionConst.WORKSPACE_ADD_MEMBER]"
6+
v-hasPermission="
7+
new ComplexPermission(
8+
[RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE],
9+
[PermissionConst.WORKSPACE_ADD_MEMBER, PermissionConst.WORKSPACE_WORKSPACE_ADD_MEMBER],
10+
[],
11+
'OR',)"
712
>
813
{{ $t('views.role.member.add') }}
914
</el-button>
@@ -42,7 +47,12 @@
4247
type="primary"
4348
text
4449
@click.stop="handleDelete(row)"
45-
v-hasPermission="[RoleConst.ADMIN, PermissionConst.WORKSPACE_REMOVE_MEMBER]"
50+
v-hasPermission="
51+
new ComplexPermission(
52+
[RoleConst.ADMIN, RoleConst.WORKSPACE_MANAGE],
53+
[PermissionConst.WORKSPACE_REMOVE_MEMBER, PermissionConst.WORKSPACE_WORKSPACE_REMOVE_MEMBER],
54+
[],
55+
'OR',)"
4656
>
4757
<AppIcon iconName="app-delete-users"></AppIcon>
4858
</el-button>
@@ -65,6 +75,8 @@ import AddMemberDrawer from './AddMemberDrawer.vue'
6575
import WorkspaceApi from '@/api/workspace/workspace'
6676
import type { WorkspaceMemberItem, WorkspaceItem } from '@/api/type/workspace'
6777
import { PermissionConst, RoleConst } from '@/utils/permission/data'
78+
import { ComplexPermission } from '@/utils/permission/type'
79+
6880
6981
const props = defineProps<{
7082
currentWorkspace?: WorkspaceItem

0 commit comments

Comments
 (0)