Skip to content

Commit 1dcca7f

Browse files
committed
feat: add read permission checks for system management and sharing components
--bug=1062363 --user=刘瑞斌 【应用】简单应用进入编辑页面会弹工具无权限的提示 https://www.tapd.cn/62980211/s/1781286
1 parent 124d0ae commit 1dcca7f

File tree

4 files changed

+44
-15
lines changed

4 files changed

+44
-15
lines changed

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@ import {ComplexPermission} from '@/utils/permission/type'
33
import {EditionConst, PermissionConst, RoleConst} from '@/utils/permission/data'
44

55
const systemManage = {
6+
read: () =>
7+
hasPermission(
8+
[
9+
RoleConst.ADMIN,
10+
PermissionConst.RESOURCE_TOOL_READ,
11+
],
12+
'OR',
13+
),
614
is_share: () =>
715
hasPermission(
816
new ComplexPermission(
@@ -57,7 +65,7 @@ const systemManage = {
5765
'OR',
5866
),
5967

60-
auth: () =>
68+
auth: () =>
6169
hasPermission(
6270
[
6371
RoleConst.ADMIN,

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

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@ import { hasPermission } from '@/utils/permission/index'
22
import { ComplexPermission } from '@/utils/permission/type'
33
import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data'
44
const share = {
5+
read: () =>
6+
hasPermission(
7+
[
8+
RoleConst.ADMIN,
9+
PermissionConst.SHARED_TOOL_READ,
10+
],
11+
'OR',
12+
),
513
is_share: () => false,
614
create: () =>
715
hasPermission(
@@ -67,8 +75,8 @@ const share = {
6775
],
6876
'OR',
6977
),
70-
71-
auth: () => false,
78+
79+
auth: () => false,
7280
folderCreate: () => false,
7381
folderEdit: () => false,
7482
folderDelete: () => false,

ui/src/permission/tool/workspace.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@ import { hasPermission } from '@/utils/permission/index'
22
import { ComplexPermission } from '@/utils/permission/type'
33
import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data'
44
const workspace = {
5+
read: () =>
6+
hasPermission(
7+
[PermissionConst.TOOL_READ.getWorkspacePermission, PermissionConst.TOOL_READ.getWorkspacePermissionWorkspaceManageRole],
8+
'OR'
9+
),
510
is_share: () =>
611
hasPermission(
712
new ComplexPermission(
@@ -29,7 +34,7 @@ const workspace = {
2934
PermissionConst.TOOL_IMPORT.getWorkspacePermissionWorkspaceManageRole
3035
],
3136
'OR'
32-
),
37+
),
3338
folderCreate: () =>
3439
hasPermission(
3540
[
@@ -109,7 +114,7 @@ const workspace = {
109114
PermissionConst.TOOL_EXPORT.getWorkspacePermissionWorkspaceManageRole
110115
],
111116
'OR'
112-
),
117+
),
113118
auth: (source_id:string) =>
114119
hasPermission(
115120
[
@@ -119,18 +124,18 @@ const workspace = {
119124
PermissionConst.TOOL_RESOURCE_AUTHORIZATION.getWorkspacePermissionWorkspaceManageRole
120125
],
121126
'OR'
122-
),
127+
),
123128
debug: () =>
124129
hasPermission(
125-
[
126-
RoleConst.USER.getWorkspaceRole,
130+
[
131+
RoleConst.USER.getWorkspaceRole,
127132
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
128133
PermissionConst.TOOL_EDIT.getWorkspacePermission,
129134
PermissionConst.TOOL_EDIT.getWorkspacePermissionWorkspaceManageRole
130135
],
131136
'OR'
132-
),
133-
137+
),
138+
134139
}
135140

136141
export default workspace

ui/src/views/application/ApplicationSetting.vue

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@
304304
/>
305305
</el-form-item>
306306
<!-- MCP-->
307-
<el-form-item @click.prevent>
307+
<el-form-item @click.prevent v-if="toolPermissionPrecise.read()">
308308
<template #label>
309309
<div class="flex-between">
310310
<span>MCP</span>
@@ -326,8 +326,10 @@
326326
<div
327327
class="w-full mb-16"
328328
v-if="
329+
(
329330
(applicationForm.mcp_tool_ids && applicationForm.mcp_tool_ids.length > 0) ||
330331
(applicationForm.mcp_servers && applicationForm.mcp_servers.length > 0)
332+
) && toolPermissionPrecise.read()
331333
"
332334
>
333335
<template v-for="(item, index) in applicationForm.mcp_tool_ids" :key="index">
@@ -368,7 +370,7 @@
368370
</template>
369371
</div>
370372
<!-- 工具 -->
371-
<el-form-item @click.prevent>
373+
<el-form-item @click.prevent v-if="toolPermissionPrecise.read()">
372374
<template #label>
373375
<div class="flex-between">
374376
<span class="mr-4">
@@ -395,7 +397,7 @@
395397
</el-form-item>
396398
<div
397399
class="w-full mb-16"
398-
v-if="applicationForm.tool_ids && applicationForm.tool_ids.length > 0"
400+
v-if="applicationForm.tool_ids && applicationForm.tool_ids.length > 0 && toolPermissionPrecise.read()"
399401
>
400402
<template v-for="(item, index) in applicationForm.tool_ids" :key="index">
401403
<div
@@ -673,6 +675,10 @@ const permissionPrecise = computed(() => {
673675
return permissionMap['application'][apiType.value]
674676
})
675677
678+
const toolPermissionPrecise = computed(() => {
679+
return permissionMap['tool'][apiType.value]
680+
})
681+
676682
const defaultPrompt = t('views.application.form.prompt.defaultPrompt', {
677683
data: '{data}',
678684
question: '{question}',
@@ -1109,8 +1115,10 @@ onMounted(() => {
11091115
getDetail()
11101116
getSTTModel()
11111117
getTTSModel()
1112-
getToolSelectOptions()
1113-
getMcpToolSelectOptions()
1118+
if (toolPermissionPrecise.value.read()) {
1119+
getToolSelectOptions();
1120+
getMcpToolSelectOptions()
1121+
}
11141122
})
11151123
</script>
11161124
<style lang="scss" scoped>

0 commit comments

Comments
 (0)