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( hasPermission(
new ComplexPermission( new ComplexPermission(
[RoleConst.ADMIN], [RoleConst.ADMIN],
[PermissionConst.SHARED_TOOL_READ], [PermissionConst.MODEL_READ],
[EditionConst.IS_EE], [EditionConst.IS_EE],
'OR', 'OR',
), ),
'OR', 'OR',
), ),
delete: () => addModel: () => false,
hasPermission( modify: () => false,
[ paramSetting: () => false,
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, delete: () => false,
RoleConst.USER.getWorkspaceRole,
PermissionConst.TOOL_DELETE.getWorkspacePermission,
],
'OR',
),
} }
export default workspace export default workspace

View File

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

View File

@ -6,12 +6,52 @@ const workspace = {
hasPermission( hasPermission(
new ComplexPermission( new ComplexPermission(
[RoleConst.ADMIN], [RoleConst.ADMIN],
[PermissionConst.SHARED_TOOL_READ], [PermissionConst.MODEL_READ],
[EditionConst.IS_EE], [EditionConst.IS_EE],
'OR', 'OR',
), ),
'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 export default workspace

View File

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

View File

@ -7,7 +7,7 @@
@click="clickListHandle" @click="clickListHandle"
:loading="loading" :loading="loading"
shareTitle="views.system.share_tool" shareTitle="views.system.share_tool"
isShared :showShared="permissionPrecise['is_share']()"
:active="active_provider" :active="active_provider"
/> />
</template> </template>
@ -55,15 +55,12 @@
</el-select> </el-select>
</div> </div>
<el-button <el-button
v-if="!isShared" v-if="!isShared &&
permissionPrecise.addModel()
"
class="ml-16" class="ml-16"
type="primary" type="primary"
@click="openCreateModel(active_provider)" @click="openCreateModel(active_provider)"
v-hasPermission="[
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
RoleConst.USER.getWorkspaceRole,
PermissionConst.MODEL_CREATE.getWorkspacePermission,
]"
> >
{{ $t('views.model.addModel') }} {{ $t('views.model.addModel') }}
</el-button> </el-button>
@ -128,6 +125,26 @@ import SelectProviderDialog from '@/views/model/component/SelectProviderDialog.v
import { t } from '@/locales' import { t } from '@/locales'
import { PermissionConst, RoleConst } from '@/utils/permission/data' import { PermissionConst, RoleConst } from '@/utils/permission/data'
import { loadSharedApi } from '@/utils/dynamics-api/shared-api' 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 commonList1 = ref()
const commonList2 = ref() const commonList2 = ref()