Skip to content

Commit 8048e73

Browse files
committed
feat: Button Permission
1 parent d9bd35e commit 8048e73

File tree

10 files changed

+144
-41
lines changed

10 files changed

+144
-41
lines changed

ui/src/router/modules/4model.ts

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

ui/src/utils/permission/data.ts

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import { Permission, Role, Edition } from '@/utils/permission/type'
2727
const PermissionConst = {
2828
USER_READ: new Permission('USER:READ'),
2929
USER_CREATE: new Permission('USER:CREATE'),
30-
APPLICATION_OVERVIEW_READ: new Permission('APPLICATION_OVERVIEW_READ'),
3130

3231
KNOWLEDGE_READ: new Permission('KNOWLEDGE:READ'),
3332
KNOWLEDGE_CREATE: new Permission('KNOWLEDGE:READ+CREATE'),
@@ -57,6 +56,57 @@ const PermissionConst = {
5756
MODEL_EDIT:new Permission('MODEL:READ+EDIT'),
5857
MODEL_DELETE:new Permission('MODEL:READ+DELETE'),
5958

59+
APPLICATION_READ:new Permission('APPLICATION:READ'),
60+
APPLICATION_EXPORT:new Permission('APPLICATION:READ+EXPORT'),
61+
APPLICATION_DELETE:new Permission('APPLICATION:READ+DELETE'),
62+
APPLICATION_EDIT:new Permission('APPLICATION:READ+EDIT'),
63+
64+
APPLICATION_OVERVIEW_READ:new Permission('OVERVIEW:READ'),
65+
APPLICATION_OVERVIEW_EMBEDDED:new Permission('OVERVIEW:READ'),
66+
APPLICATION_OVERVIEW_ACCESS:new Permission('OVERVIEW:READ'),
67+
APPLICATION_OVERVIEW_DISPLAY:new Permission('OVERVIEW:READ'),
68+
APPLICATION_OVERVIEW_API_KEY:new Permission('OVERVIEW:READ'),
69+
APPLICATION_OVERVIEW_PUBLIC:new Permission('OVERVIEW:READ'),
70+
71+
APPLICATION_CHAT_LOG:new Permission('APPLICATION_CHAT_LOG:READ'),
72+
APPLICATION_CHAT_LOG_ANNOTATION:new Permission('APPLICATION_CHAT_LOG:READ+ANNOTATION'),
73+
APPLICATION_CHAT_LOG_EXPORT:new Permission('APPLICATION_CHAT_LOG:READ+EXPORT'),
74+
APPLICATION_CHAT_LOG_POLICY:new Permission('APPLICATION_CHAT_LOG:READ+CLEAR_POLICY'),
75+
76+
APPLICATION_ACCESS_READ:new Permission('APPLICATION_CHAT_LOG:READ'),
77+
APPLICATION_ACCESS_EDIT:new Permission('APPLICATION_CHAT_LOG:READ+EDIT'),
78+
79+
SHARED_TOOL_READ:new Permission('SYSTEM_TOOL:READ'),
80+
SHARED_TOOL_CREATE:new Permission('SYSTEM_TOOL:READ+CREATE'),
81+
SHARED_TOOL_EDIT:new Permission('SYSTEM_TOOL:READ+EDIT'),
82+
SHARED_TOOL_DELETE:new Permission('SYSTEM_TOOL:READ+DELETE'),
83+
SHARED_TOOL_IMPORT:new Permission('SYSTEM_TOOL:READ+IMPORT'),
84+
SHARED_TOOL_EXPORT:new Permission('SYSTEM_TOOL:READ+EXPORT'),
85+
SHARED_TOOL_DEBUG:new Permission('SYSTEM_TOOL:READ+DEBUG'),
86+
87+
TOOL_CREATE:new Permission('TOOL:READ+CREATE'),
88+
TOOL_EDIT:new Permission('TOOL:READ+EDIT'),
89+
TOOL_READ:new Permission('TOOL:READ'),
90+
TOOL_DELETE:new Permission('TOOL:READ+DELETE'),
91+
TOOL_DEBUG:new Permission('TOOL:READ+DEBUG'),
92+
TOOL_IMPORT:new Permission('TOOL:READ+IMPORT'),
93+
TOOL_EXPORT:new Permission('TOOL:READ+EXPORT'),
94+
95+
RESOURCE_TOOL_CREATE:new Permission('SYSTEM_RES_TOOL:READ+CREATE'),
96+
RESOURCE_TOOL_EDIT:new Permission('SYSTEM_RES_TOOL:READ+EDIT'),
97+
RESOURCE_TOOL_READ:new Permission('SYSTEM_RES_TOOL:READ'),
98+
RESOURCE_TOOL_DELETE:new Permission('SYSTEM_RES_TOOL:READ+DELETE'),
99+
RESOURCE_TOOL_DEBUG:new Permission('SYSTEM_RES_TOOL:READ+DEBUG'),
100+
RESOURCE_TOOL_IMPORT:new Permission('SYSTEM_RES_TOOL:READ+IMPORT'),
101+
RESOURCE_TOOL_EXPORT:new Permission('SYSTEM_RES_TOOL:READ+EXPORT'),
102+
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+
107+
108+
109+
60110

61111

62112

ui/src/views/application-overview/index.vue

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
:active-text="$t('views.applicationOverview.appInfo.openText')"
5454
:inactive-text="$t('views.applicationOverview.appInfo.closeText')"
5555
:before-change="() => changeState(accessToken.is_active)"
56+
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_EDIT.getWorkspacePermission]"
5657
/>
5758
</div>
5859

@@ -91,15 +92,21 @@
9192
<AppIcon iconName="app-create-chat" class="mr-4"></AppIcon>
9293
{{ $t('views.application.operation.toChat') }}
9394
</el-button>
94-
<el-button :disabled="!accessToken?.is_active" @click="openDialog">
95+
<el-button :disabled="!accessToken?.is_active" @click="openDialog"
96+
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_OVERVIEW_EMBEDDED.getWorkspacePermission]"
97+
>
9598
<AppIcon iconName="app-export" class="mr-4"></AppIcon>
9699
{{ $t('views.applicationOverview.appInfo.embedInWebsite') }}
97100
</el-button>
98-
<el-button @click="openLimitDialog">
101+
<el-button @click="openLimitDialog"
102+
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_OVERVIEW_ACCESS.getWorkspacePermission]"
103+
>
99104
<el-icon class="mr-4"><Lock /></el-icon>
100105
{{ $t('views.applicationOverview.appInfo.accessControl') }}
101106
</el-button>
102-
<el-button @click="openDisplaySettingDialog">
107+
<el-button @click="openDisplaySettingDialog"
108+
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_OVERVIEW_DISPLAY.getWorkspacePermission]"
109+
>
103110
<el-icon class="mr-4"><Setting /></el-icon>
104111
{{ $t('views.applicationOverview.appInfo.displaySetting') }}
105112
</el-button>
@@ -139,7 +146,9 @@
139146
</div>
140147
</div>
141148
<div>
142-
<el-button @click="openAPIKeyDialog">
149+
<el-button @click="openAPIKeyDialog"
150+
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_OVERVIEW_API_KEY.getWorkspacePermission]"
151+
>
143152
<el-icon class="mr-4"><Key /></el-icon>
144153
{{ $t('views.applicationOverview.appInfo.apiKey') }}</el-button
145154
>
@@ -215,6 +224,8 @@ import { copyClick } from '@/utils/clipboard'
215224
import { isAppIcon } from '@/utils/common'
216225
import useStore from '@/stores'
217226
import { t } from '@/locales'
227+
import { PermissionConst, RoleConst } from '@/utils/permission/data'
228+
import { hasPermission } from '@/utils/permission/index'
218229
const { user, application } = useStore()
219230
const route = useRoute()
220231
const {

ui/src/views/application/ApplicationAccess.vue

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,12 @@
2828
v-model="item.isActive"
2929
@change="changeStatus(item.key, item.isActive)"
3030
:disabled="!item.exists"
31+
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_ACCESS_EDIT.getWorkspacePermission]"
3132
/>
3233
<el-divider direction="vertical" />
33-
<el-button class="mr-4" @click="openDrawer(item.key)">{{
34+
<el-button class="mr-4" @click="openDrawer(item.key)"
35+
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_ACCESS_EDIT.getWorkspacePermission]"
36+
>{{
3437
$t('views.application.applicationAccess.setting')
3538
}}</el-button>
3639
</div>
@@ -49,6 +52,8 @@ import applicationApi from '@/api/application/application'
4952
import { MsgSuccess } from '@/utils/message'
5053
import { useRoute } from 'vue-router'
5154
import { t } from '@/locales'
55+
import { PermissionConst, RoleConst } from '@/utils/permission/data'
56+
import { hasPermission } from '@/utils/permission/index'
5257
5358
// 平台数据
5459
const platforms = reactive([

ui/src/views/application/ApplicationSetting.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
<h3>
55
{{ $t('common.setting') }}
66
</h3>
7-
<el-button type="primary" @click="submit(applicationFormRef)" :disabled="loading">
7+
<el-button type="primary" @click="submit(applicationFormRef)" :disabled="loading"
8+
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_OVERVIEW_PUBLIC.getWorkspacePermission]"
9+
>
810
{{ $t('views.application.buttons.publish') }}
911
</el-button>
1012
</div>
@@ -439,6 +441,8 @@ import useStore from '@/stores'
439441
import { t } from '@/locales'
440442
import TTSModeParamSettingDialog from './component/TTSModeParamSettingDialog.vue'
441443
import ReasoningParamSettingDialog from './component/ReasoningParamSettingDialog.vue'
444+
import { PermissionConst, RoleConst } from '@/utils/permission/data'
445+
import { hasPermission } from '@/utils/permission/index'
442446
443447
const { knowledge, model, application } = useStore()
444448

ui/src/views/application/index.vue

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@
4242
</el-select>
4343
</div>
4444
<el-dropdown trigger="click">
45-
<el-button type="primary" class="ml-8">
45+
<el-button type="primary" class="ml-8"
46+
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_EDIT.getWorkspacePermission]">
4647
{{ $t('common.create') }}
4748
<el-icon class="el-icon--right">
4849
<arrow-down />
@@ -217,18 +218,23 @@
217218
<AppIcon iconName="app-create-chat"></AppIcon>
218219
{{ $t('views.application.operation.toChat') }}
219220
</el-dropdown-item>
220-
<el-dropdown-item @click.stop="settingApplication(item)">
221+
<el-dropdown-item @click.stop="settingApplication(item)"
222+
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_EDIT.getWorkspacePermission],'OR')"
223+
>
221224
<el-icon><Setting /></el-icon>
222225
{{ $t('common.setting') }}
223226
</el-dropdown-item>
224-
<el-dropdown-item divided @click.stop="exportApplication(item)">
227+
<el-dropdown-item divided @click.stop="exportApplication(item)"
228+
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_EXPORT.getWorkspacePermission],'OR')"
229+
>
225230
<AppIcon iconName="app-export"></AppIcon>
226231
{{ $t('common.export') }}
227232
</el-dropdown-item>
228233
<el-dropdown-item
229234
divided
230235
icon="Delete"
231236
@click.stop="deleteApplication(item)"
237+
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_DELETE.getWorkspacePermission],'OR')"
232238
>{{ $t('common.delete') }}</el-dropdown-item
233239
>
234240
</el-dropdown-menu>
@@ -262,6 +268,8 @@ import { t } from '@/locales'
262268
import { useRouter } from 'vue-router'
263269
import { isWorkFlow } from '@/utils/application'
264270
import { dateFormat } from '@/utils/time'
271+
import { PermissionConst, RoleConst } from '@/utils/permission/data'
272+
import { hasPermission } from '@/utils/permission/index'
265273
266274
const router = useRouter()
267275
const { folder, application, user } = useStore()

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

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,19 @@
3838
clearable
3939
/>
4040
<div style="display: flex; align-items: center" class="float-right">
41-
<el-button @click="dialogVisible = true">{{
42-
$t('views.chatLog.buttons.clearStrategy')
43-
}}</el-button>
44-
<el-button @click="exportLog">{{ $t('common.export') }}</el-button>
41+
<el-button @click="dialogVisible = true"
42+
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_CHAT_LOG_POLICY.getWorkspacePermission]"
43+
>
44+
{{$t('views.chatLog.buttons.clearStrategy')}}
45+
</el-button>
46+
<el-button @click="exportLog"
47+
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_CHAT_LOG_EXPORT.getWorkspacePermission]"
48+
>
49+
{{ $t('common.export') }}
50+
</el-button>
4551
<el-button @click="openDocumentDialog" :disabled="multipleSelection.length === 0"
46-
>{{ $t('views.chatLog.addToKnowledge') }}
52+
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.APPLICATION_CHAT_LOG_EXPORT.getWorkspacePermission]"
53+
>{{ $t('views.chatLog.addToKnowledge') }}
4754
</el-button>
4855
</div>
4956
</div>
@@ -278,6 +285,8 @@ import type { Dict } from '@/api/type/common'
278285
import { t } from '@/locales'
279286
import type { FormInstance, FormRules } from 'element-plus'
280287
import { ElTable } from 'element-plus'
288+
import { PermissionConst, RoleConst } from '@/utils/permission/data'
289+
import { hasPermission } from '@/utils/permission/index'
281290
282291
const { application, chatLog, document, user } = useStore()
283292
const route = useRoute()

ui/src/views/knowledge/index.vue

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -227,10 +227,6 @@
227227
<el-button
228228
text
229229
@click.stop
230-
v-hasPermission="[
231-
RoleConst.ADMIN.getWorkspaceRole,
232-
PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermission,
233-
]"
234230
>
235231
<el-icon>
236232
<MoreFilled />
@@ -241,39 +237,51 @@
241237
<el-dropdown-item
242238
icon="Refresh"
243239
@click.stop="syncKnowledge(item)"
244-
v-if="item.type === 1"
240+
v-if="item.type === 1 ||
241+
hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_SYNC.getWorkspacePermission],'OR')
242+
"
245243
>{{ $t('views.knowledge.setting.sync') }}
246244
</el-dropdown-item>
247-
<el-dropdown-item @click.stop="reEmbeddingKnowledge(item)">
245+
<el-dropdown-item @click.stop="reEmbeddingKnowledge(item)"
246+
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_VECTOR.getWorkspacePermission],'OR')"
247+
>
248248
<AppIcon iconName="app-vectorization"></AppIcon>
249249
{{ $t('views.knowledge.setting.vectorization') }}
250250
</el-dropdown-item>
251251

252252
<el-dropdown-item
253253
icon="Connection"
254254
@click.stop="openGenerateDialog(item)"
255-
>{{ $t('views.document.generateQuestion.title') }}</el-dropdown-item
256-
>
255+
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_PROBLEM_CREATE.getWorkspacePermission],'OR')"
256+
>{{ $t('views.document.generateQuestion.title') }}
257+
</el-dropdown-item>
257258
<el-dropdown-item
258259
icon="Setting"
259260
@click.stop="
260261
router.push({
261262
path: `/knowledge/${item.id}/${currentFolder.value}/setting`,
262-
})
263-
"
263+
})"
264+
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_EDIT.getWorkspacePermission],'OR')"
265+
>
266+
{{ $t('common.setting') }}
267+
</el-dropdown-item
264268
>
265-
{{ $t('common.setting') }}</el-dropdown-item
269+
<el-dropdown-item @click.stop="exportKnowledge(item)"
270+
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_EXPORT.getWorkspacePermission],'OR')"
266271
>
267-
<el-dropdown-item @click.stop="exportKnowledge(item)">
268272
<AppIcon iconName="app-export"></AppIcon
269-
>{{ $t('views.document.setting.export') }} Excel</el-dropdown-item
273+
>{{ $t('views.document.setting.export') }} Excel
274+
</el-dropdown-item>
275+
<el-dropdown-item @click.stop="exportZipKnowledge(item)"
276+
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_EXPORT.getWorkspacePermission],'OR')"
270277
>
271-
<el-dropdown-item @click.stop="exportZipKnowledge(item)">
272278
<AppIcon iconName="app-export"></AppIcon
273279
>{{ $t('views.document.setting.export') }} ZIP</el-dropdown-item
274280
>
275-
<el-dropdown-item icon="Delete" @click.stop="deleteKnowledge(item)">{{
276-
$t('common.delete')
281+
<el-dropdown-item icon="Delete" @click.stop="deleteKnowledge(item)"
282+
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.KNOWLEDGE_EXPORT.getWorkspacePermission],'OR')"
283+
>
284+
{{$t('common.delete')
277285
}}</el-dropdown-item>
278286
</el-dropdown-menu>
279287
</template>

ui/src/views/model/component/ModelCard.vue

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,11 @@
7575
<template #dropdown>
7676
<el-dropdown-menu>
7777
<el-dropdown-item
78+
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.MODEL_EDIT.getWorkspacePermission],'OR')"
7879
icon="EditPen"
7980
:disabled="!is_permisstion"
8081
text
8182
@click.stop="openEditModel"
82-
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.MODEL_EDIT.getWorkspacePermission]"
8383
>
8484
{{ $t('common.modify') }}
8585
</el-dropdown-item>
@@ -89,12 +89,12 @@
8989
currentModel.model_type === 'TTS' ||
9090
currentModel.model_type === 'LLM' ||
9191
currentModel.model_type === 'IMAGE' ||
92-
currentModel.model_type === 'TTI'
92+
currentModel.model_type === 'TTI' ||
93+
hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.MODEL_EDIT.getWorkspacePermission],'OR')
9394
"
9495
:disabled="!is_permisstion"
9596
icon="Setting"
9697
@click.stop="openParamSetting"
97-
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.MODEL_EDIT.getWorkspacePermission]"
9898
>
9999
{{ $t('views.model.modelForm.title.paramSetting') }}
100100
</el-dropdown-item>
@@ -104,7 +104,7 @@
104104
:disabled="!is_permisstion"
105105
text
106106
@click.stop="deleteModel"
107-
v-hasPermission="[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.MODEL_DELETE.getWorkspacePermission]"
107+
v-if="hasPermission([RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,PermissionConst.MODEL_DELETE.getWorkspacePermission],'OR')"
108108
>
109109
{{ $t('common.delete') }}
110110
</el-dropdown-item>
@@ -127,7 +127,8 @@ import {modelType} from '@/enums/model'
127127
import useStore from '@/stores'
128128
import ParamSettingDialog from './ParamSettingDialog.vue'
129129
import {t} from '@/locales'
130-
import { PermissionConst, EditionConst, RoleConst } from '@/utils/permission/data'
130+
import { PermissionConst, RoleConst } from '@/utils/permission/data'
131+
import { hasPermission } from '@/utils/permission'
131132
132133
const props = defineProps<{
133134
model: Model

0 commit comments

Comments
 (0)