feat: Model permission

This commit is contained in:
zhangzhanwei 2025-06-23 20:40:56 +08:00 committed by zhanweizhang7
parent dca48d1388
commit 22e3bc1aa4
5 changed files with 97 additions and 44 deletions

View File

@ -6,21 +6,16 @@ const workspace = {
hasPermission(
new ComplexPermission(
[RoleConst.ADMIN],
[PermissionConst.SHARED_TOOL_READ],
[PermissionConst.MODEL_READ],
[EditionConst.IS_EE],
'OR',
),
'OR',
),
delete: () =>
hasPermission(
[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
PermissionConst.TOOL_DELETE.getWorkspacePermission,
],
'OR',
),
addModel: () => false,
modify: () => false,
paramSetting: () => false,
delete: () => false,
}
export default workspace

View File

@ -3,5 +3,10 @@ import { ComplexPermission } from '@/utils/permission/type'
import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data'
const share = {
is_share: () => false,
addModel: () => false,
modify: () => false,
paramSetting: () => false,
delete: () => false,
}
export default share

View File

@ -6,12 +6,52 @@ const workspace = {
hasPermission(
new ComplexPermission(
[RoleConst.ADMIN],
[PermissionConst.SHARED_TOOL_READ],
[PermissionConst.MODEL_READ],
[EditionConst.IS_EE],
'OR',
),
'OR',
),
addModel: () =>
hasPermission(
[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
PermissionConst.MODEL_CREATE.getWorkspacePermission,
PermissionConst.MODEL_CREATE.getWorkspacePermissionWorkspaceManageRole
],
'OR'
),
modify: () =>
hasPermission(
[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
PermissionConst.MODEL_EDIT.getWorkspacePermission,
PermissionConst.MODEL_EDIT.getWorkspacePermissionWorkspaceManageRole
],
'OR'
),
paramSetting: () =>
hasPermission(
[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
PermissionConst.MODEL_EDIT.getWorkspacePermission,
PermissionConst.MODEL_EDIT.getWorkspacePermissionWorkspaceManageRole
],
'OR'
),
delete: () =>
hasPermission(
[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
PermissionConst.MODEL_DELETE.getWorkspacePermission,
PermissionConst.MODEL_DELETE.getWorkspacePermissionWorkspaceManageRole
],
'OR'
),
}
export default workspace

View File

@ -77,16 +77,7 @@
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item
v-if="
hasPermission(
[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
PermissionConst.MODEL_EDIT.getWorkspacePermission,
],
'OR',
)
"
v-if="permissionPrecise.modify()"
icon="EditPen"
:disabled="!is_permisstion"
text
@ -101,14 +92,8 @@
currentModel.model_type === 'LLM' ||
currentModel.model_type === 'IMAGE' ||
currentModel.model_type === 'TTI' ||
hasPermission(
[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
PermissionConst.MODEL_EDIT.getWorkspacePermission,
],
'OR',
)
permissionPrecise.paramSetting()
"
:disabled="!is_permisstion"
icon="Setting"
@ -123,14 +108,7 @@
text
@click.stop="deleteModel"
v-if="
hasPermission(
[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
PermissionConst.MODEL_DELETE.getWorkspacePermission,
],
'OR',
)
permissionPrecise.delete()
"
>
{{ $t('common.delete') }}
@ -156,6 +134,24 @@ import ParamSettingDialog from './ParamSettingDialog.vue'
import { t } from '@/locales'
import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { hasPermission } from '@/utils/permission'
import { useRoute } from 'vue-router'
import permissionMap from '@/permission'
const route = useRoute()
const type = computed(() => {
if (route.path.includes('shared')) {
return 'systemShare'
} else if (route.path.includes('resource-management')) {
return 'systemManage'
} else {
return 'workspace'
}
})
const permissionPrecise = computed(() => {
return permissionMap['model'][type.value]
})
const props = defineProps<{
model: Model

View File

@ -7,7 +7,7 @@
@click="clickListHandle"
:loading="loading"
shareTitle="views.system.share_tool"
isShared
:showShared="permissionPrecise['is_share']()"
:active="active_provider"
/>
</template>
@ -55,15 +55,12 @@
</el-select>
</div>
<el-button
v-if="!isShared"
v-if="!isShared &&
permissionPrecise.addModel()
"
class="ml-16"
type="primary"
@click="openCreateModel(active_provider)"
v-hasPermission="[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
PermissionConst.MODEL_CREATE.getWorkspacePermission,
]"
>
{{ $t('views.model.addModel') }}
</el-button>
@ -128,6 +125,26 @@ import SelectProviderDialog from '@/views/model/component/SelectProviderDialog.v
import { t } from '@/locales'
import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
import { useRoute } from 'vue-router'
import useStore from '@/stores'
import permissionMap from '@/permission'
const route = useRoute()
const { folder, user } = useStore()
const type = computed(() => {
if (route.path.includes('shared')) {
return 'systemShare'
} else if (route.path.includes('resource-management')) {
return 'systemManage'
} else {
return 'workspace'
}
})
const permissionPrecise = computed(() => {
return permissionMap['model'][type.value]
})
const commonList1 = ref()
const commonList2 = ref()