Skip to content

Commit bac0f79

Browse files
committed
feat: Application router permission
1 parent f6c5d6d commit bac0f79

File tree

6 files changed

+138
-25
lines changed

6 files changed

+138
-25
lines changed

ui/src/permission/application/workspace.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,46 @@ const workspace = {
9595
],
9696
'OR'
9797
),
98+
chat_user_edit: (source_id:string) =>
99+
hasPermission(
100+
[
101+
RoleConst.ADMIN,
102+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
103+
PermissionConst.APPLICATION_CHAT_USER_EDIT.getWorkspacePermissionWorkspaceManageRole,
104+
PermissionConst.APPLICATION_CHAT_USER_EDIT.getApplicationWorkspaceResourcePermission(source_id)
105+
],
106+
'OR'
107+
),
108+
chat_log_clear: (source_id:string) =>
109+
hasPermission(
110+
[
111+
RoleConst.ADMIN,
112+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
113+
PermissionConst.APPLICATION_CHAT_LOG_CLEAR_POLICY.getWorkspacePermissionWorkspaceManageRole,
114+
PermissionConst.APPLICATION_CHAT_LOG_CLEAR_POLICY.getApplicationWorkspaceResourcePermission(source_id)
115+
],
116+
'OR'
117+
),
118+
chat_log_export: (source_id:string) =>
119+
hasPermission(
120+
[
121+
RoleConst.ADMIN,
122+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
123+
PermissionConst.APPLICATION_CHAT_LOG_EXPORT.getWorkspacePermissionWorkspaceManageRole,
124+
PermissionConst.APPLICATION_CHAT_LOG_EXPORT.getApplicationWorkspaceResourcePermission(source_id)
125+
],
126+
'OR'
127+
),
128+
chat_log_add_knowledge: (source_id:string) =>
129+
hasPermission(
130+
[
131+
RoleConst.ADMIN,
132+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
133+
PermissionConst.APPLICATION_CHAT_LOG_ADD_KNOWLEDGE.getWorkspacePermissionWorkspaceManageRole,
134+
PermissionConst.APPLICATION_CHAT_LOG_ADD_KNOWLEDGE.getApplicationWorkspaceResourcePermission(source_id)
135+
],
136+
'OR'
137+
),
98138
}
99139

100140

ui/src/router/modules/application-detail.ts

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { ChatUserResourceEnum } from '@/enums/workspaceChatUser'
2+
import { get_next_route } from '@/utils/permission'
23

34
import { PermissionConst, EditionConst, RoleConst } from '@/utils/permission/data'
45

@@ -19,6 +20,17 @@ const ApplicationDetailRouter = {
1920
active: 'overview',
2021
parentPath: '/application/:id/:type',
2122
parentName: 'ApplicationDetail',
23+
permission: [
24+
RoleConst.ADMIN,
25+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
26+
PermissionConst.APPLICATION_OVERVIEW_READ.getWorkspacePermissionWorkspaceManageRole,
27+
() => {
28+
const to: any = get_next_route()
29+
return PermissionConst.APPLICATION_OVERVIEW_READ.getApplicationWorkspaceResourcePermission(
30+
to ? to.params.id : '',
31+
)
32+
}
33+
]
2234
},
2335
component: () => import('@/views/application-overview/index.vue'),
2436
},
@@ -32,6 +44,17 @@ const ApplicationDetailRouter = {
3244
active: 'setting',
3345
parentPath: '/application/:id/:type',
3446
parentName: 'ApplicationDetail',
47+
permission: [
48+
RoleConst.ADMIN,
49+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
50+
PermissionConst.APPLICATION_EDIT.getWorkspacePermissionWorkspaceManageRole,
51+
() => {
52+
const to: any = get_next_route()
53+
return PermissionConst.APPLICATION_EDIT.getApplicationWorkspaceResourcePermission(
54+
to ? to.params.id : '',
55+
)
56+
}
57+
]
3558
},
3659
component: () => import('@/views/application/ApplicationSetting.vue'),
3760
},
@@ -45,7 +68,17 @@ const ApplicationDetailRouter = {
4568
active: 'access',
4669
parentPath: '/application/:id/:type',
4770
parentName: 'ApplicationDetail',
48-
permission: [EditionConst.IS_PE, EditionConst.IS_EE],
71+
permission: [
72+
RoleConst.ADMIN,
73+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
74+
PermissionConst.APPLICATION_ACCESS_READ.getWorkspacePermissionWorkspaceManageRole,
75+
() => {
76+
const to: any = get_next_route()
77+
return PermissionConst.APPLICATION_ACCESS_READ.getApplicationWorkspaceResourcePermission(
78+
to ? to.params.id : '',
79+
)
80+
}
81+
]
4982
},
5083
component: () => import('@/views/application/ApplicationAccess.vue'),
5184
},
@@ -60,7 +93,17 @@ const ApplicationDetailRouter = {
6093
parentPath: '/application/:id/:type',
6194
parentName: 'ApplicationDetail',
6295
resourceType: ChatUserResourceEnum.APPLICATION,
63-
permission: [EditionConst.IS_PE, EditionConst.IS_EE],
96+
permission: [
97+
RoleConst.ADMIN,
98+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
99+
PermissionConst.APPLICATION_CHAT_USER_READ.getWorkspacePermissionWorkspaceManageRole,
100+
() => {
101+
const to: any = get_next_route()
102+
return PermissionConst.APPLICATION_CHAT_USER_READ.getApplicationWorkspaceResourcePermission(
103+
to ? to.params.id : '',
104+
)
105+
}
106+
]
64107
},
65108
component: () => import('@/views/chat-user/index.vue'),
66109
},
@@ -74,6 +117,17 @@ const ApplicationDetailRouter = {
74117
active: 'chat-log',
75118
parentPath: '/application/:id/:type',
76119
parentName: 'ApplicationDetail',
120+
permission: [
121+
RoleConst.ADMIN,
122+
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
123+
PermissionConst.APPLICATION_CHAT_LOG_READ.getWorkspacePermissionWorkspaceManageRole,
124+
() => {
125+
const to: any = get_next_route()
126+
return PermissionConst.APPLICATION_CHAT_LOG_READ.getApplicationWorkspaceResourcePermission(
127+
to ? to.params.id : '',
128+
)
129+
}
130+
]
77131
},
78132
component: () => import('@/views/chat-log/index.vue'),
79133
},

ui/src/router/modules/document.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
import role from '@/api/system/role'
21
import { ChatUserResourceEnum } from '@/enums/workspaceChatUser'
32
import { get_next_route } from '@/utils/permission'
4-
import { PermissionConst, EditionConst, RoleConst } from '@/utils/permission/data'
3+
import { PermissionConst, RoleConst } from '@/utils/permission/data'
54
const DocumentRouter = {
65
path: '/knowledge/:id/:folderId',
76
name: 'KnowledgeDetail',

ui/src/utils/permission/data.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,14 +130,18 @@ const PermissionConst = {
130130
APPLICATION_OVERVIEW_API_KEY:new Permission('APPLICATION_OVERVIEW:READ+API_KEY'),
131131
APPLICATION_OVERVIEW_PUBLIC:new Permission('APPLICATION_OVERVIEW:READ+PUBLIC_ACCESS'),
132132

133-
APPLICATION_CHAT_LOG:new Permission('APPLICATION_CHAT_LOG:READ'),
133+
APPLICATION_CHAT_LOG_READ:new Permission('APPLICATION_CHAT_LOG:READ'),
134134
APPLICATION_CHAT_LOG_ANNOTATION:new Permission('APPLICATION_CHAT_LOG:READ+ANNOTATION'),
135135
APPLICATION_CHAT_LOG_EXPORT:new Permission('APPLICATION_CHAT_LOG:READ+EXPORT'),
136-
APPLICATION_CHAT_LOG_POLICY:new Permission('APPLICATION_CHAT_LOG:READ+CLEAR_POLICY'),
136+
APPLICATION_CHAT_LOG_CLEAR_POLICY:new Permission('APPLICATION_CHAT_LOG:READ+CLEAR_POLICY'),
137+
APPLICATION_CHAT_LOG_ADD_KNOWLEDGE:new Permission('APPLICATION_CHAT_LOG:READ+ADD_KNOWLEDGE'),
137138

138139
APPLICATION_ACCESS_READ:new Permission('APPLICATION_ACCESS:READ'),
139140
APPLICATION_ACCESS_EDIT:new Permission('APPLICATION_ACCESS:READ+EDIT'),
140141

142+
APPLICATION_CHAT_USER_READ:new Permission('CHAT_USER:READ'),
143+
APPLICATION_CHAT_USER_EDIT:new Permission('CHAT_USER:READ+EDIT'),
144+
141145
SHARED_TOOL_READ:new Permission('SYSTEM_TOOL:READ'),
142146
SHARED_TOOL_CREATE:new Permission('SYSTEM_TOOL:READ+CREATE'),
143147
SHARED_TOOL_EDIT:new Permission('SYSTEM_TOOL:READ+EDIT'),

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

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -40,32 +40,20 @@
4040
<div style="display: flex; align-items: center" class="float-right">
4141
<el-button
4242
@click="dialogVisible = true"
43-
v-hasPermission="[
44-
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
45-
RoleConst.USER.getWorkspaceRole,
46-
PermissionConst.APPLICATION_CHAT_LOG_POLICY.getWorkspacePermission,
47-
]"
43+
v-if="permissionPrecise.chat_log_clear(id)"
4844
>
4945
{{ $t('views.chatLog.buttons.clearStrategy') }}
5046
</el-button>
5147
<el-button
5248
@click="exportLog"
53-
v-hasPermission="[
54-
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
55-
RoleConst.USER.getWorkspaceRole,
56-
PermissionConst.APPLICATION_CHAT_LOG_EXPORT.getWorkspacePermission,
57-
]"
49+
v-if="permissionPrecise.chat_log_export(id)"
5850
>
5951
{{ $t('common.export') }}
6052
</el-button>
6153
<el-button
6254
@click="openDocumentDialog"
6355
:disabled="multipleSelection.length === 0"
64-
v-hasPermission="[
65-
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
66-
RoleConst.USER.getWorkspaceRole,
67-
PermissionConst.APPLICATION_CHAT_LOG_EXPORT.getWorkspacePermission,
68-
]"
56+
v-if="permissionPrecise.chat_log_add_knowledge(id)"
6957
>{{ $t('views.chatLog.addToKnowledge') }}
7058
</el-button>
7159
</div>
@@ -304,9 +292,19 @@ import type { FormInstance, FormRules } from 'element-plus'
304292
import { ElTable } from 'element-plus'
305293
import { PermissionConst, RoleConst } from '@/utils/permission/data'
306294
import { hasPermission } from '@/utils/permission/index'
295+
import permissionMap from '@/permission'
307296
308-
const { application, chatLog, user } = useStore()
309297
const route = useRoute()
298+
299+
const apiType = computed<'workspace'>(() => {
300+
return 'workspace'
301+
})
302+
const permissionPrecise = computed(() => {
303+
return permissionMap['application'][apiType.value]
304+
})
305+
306+
307+
const { application, chatLog, user } = useStore()
310308
const {
311309
params: { id },
312310
} = route as any

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

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@
4141
{{ paginationConfig.total }}
4242
</span>
4343
</div>
44-
<el-button type="primary" :disabled="current?.is_auth" @click="handleSave">
44+
<el-button type="primary" :disabled="current?.is_auth" @click="handleSave"
45+
v-if="permissionPrecise.chat_user_edit(id)"
46+
>
4547
{{ t('common.save') }}
4648
</el-button>
4749
</div>
@@ -54,10 +56,13 @@
5456
<el-input v-if="searchType === 'name'" v-model="searchForm.name" @change="getList"
5557
:placeholder="$t('common.inputPlaceholder')" style="width: 220px" clearable />
5658
</div>
57-
<div class="flex align-center">
59+
<div class="flex align-center"
60+
v-if="permissionPrecise.chat_user_edit(id)"
61+
>
5862
<div class="color-secondary mr-8">{{ $t('views.chatUser.autoAuthorization') }}</div>
5963
<el-switch size="small" :model-value="current?.is_auth" @click="changeAuth"
60-
:loading="loading"></el-switch>
64+
:loading="loading"
65+
></el-switch>
6166
</div>
6267
</div>
6368

@@ -108,8 +113,21 @@ import type { ChatUserGroupItem, ChatUserResourceParams, ChatUserGroupUserItem }
108113
import { useRoute } from 'vue-router'
109114
import { ChatUserResourceEnum } from '@/enums/workspaceChatUser'
110115
import { MsgSuccess } from '@/utils/message'
116+
import permissionMap from '@/permission'
111117
112118
const route = useRoute()
119+
120+
const apiType = computed<'workspace'>(() => {
121+
return 'workspace'
122+
})
123+
const permissionPrecise = computed(() => {
124+
return permissionMap['application'][apiType.value]
125+
})
126+
127+
const {
128+
params: { id },
129+
} = route as any
130+
113131
const resource: ChatUserResourceParams = reactive({ resource_id: route.params.id as string, resource_type: route.meta.resourceType as ChatUserResourceEnum })
114132
115133
const filterText = ref('')

0 commit comments

Comments
 (0)