feat: Resource application permission

This commit is contained in:
zhangzhanwei 2025-07-31 14:42:16 +08:00 committed by zhanweizhang7
parent 525af67387
commit 356229c6ad
5 changed files with 101 additions and 135 deletions

View File

@ -102,5 +102,34 @@ const systemManage = {
], ],
'OR' 'OR'
), ),
overview_read: () =>
hasPermission(
[
RoleConst.ADMIN,
PermissionConst.RESOURCE_APPLICATION_OVERVIEW_READ
],
'OR'
),
access_read: () =>
hasPermission(
[
RoleConst.ADMIN,
PermissionConst.RESOURCE_APPLICATION_ACCESS_READ
],'OR'
),
chat_user_read: () =>
hasPermission(
[
RoleConst.ADMIN,
PermissionConst.RESOURCE_APPLICATION_CHAT_USER_READ
],'OR'
),
chat_log_read: () =>
hasPermission(
[
RoleConst.ADMIN,
PermissionConst.RESOURCE_APPLICATION_CHAT_LOG_READ
],
'OR')
} }
export default systemManage export default systemManage

View File

@ -164,6 +164,10 @@ const workspace = {
], ],
'OR' 'OR'
), ),
overview_read: () => false,
access_read: () => false,
chat_user_read: () => false,
chat_log_read: () => false
} }

View File

@ -33,7 +33,16 @@ const ApplicationDetailRouter = {
return PermissionConst.APPLICATION_OVERVIEW_READ.getApplicationWorkspaceResourcePermission( return PermissionConst.APPLICATION_OVERVIEW_READ.getApplicationWorkspaceResourcePermission(
to ? to.params.id : '', to ? to.params.id : '',
) )
} },
() => {
const to: any = get_next_route()
if (to.path.includes('resource-management')) {return RoleConst.ADMIN}
},
() => {
const to: any = get_next_route()
console.log('ss',to)
if (to.path.includes('resource-management')) { return PermissionConst.RESOURCE_APPLICATION_OVERVIEW_READ}
},
] ]
}, },
component: () => import('@/views/application-overview/index.vue'), component: () => import('@/views/application-overview/index.vue'),
@ -59,7 +68,15 @@ const ApplicationDetailRouter = {
return PermissionConst.APPLICATION_EDIT.getApplicationWorkspaceResourcePermission( return PermissionConst.APPLICATION_EDIT.getApplicationWorkspaceResourcePermission(
to ? to.params.id : '', to ? to.params.id : '',
) )
} },
() => {
const to: any = get_next_route()
if (to.path.includes('resource-management')) {return RoleConst.ADMIN}
},
()=>{
const to: any = get_next_route()
if (to.path.includes('resource-management')) { return PermissionConst.RESOURCE_APPLICATION_EDIT}
},
] ]
}, },
component: () => import('@/views/application/ApplicationSetting.vue'), component: () => import('@/views/application/ApplicationSetting.vue'),
@ -84,6 +101,14 @@ const ApplicationDetailRouter = {
return PermissionConst.APPLICATION_ACCESS_READ.getApplicationWorkspaceResourcePermission( return PermissionConst.APPLICATION_ACCESS_READ.getApplicationWorkspaceResourcePermission(
to ? to.params.id : '',) to ? to.params.id : '',)
}],[EditionConst.IS_EE, EditionConst.IS_PE],'OR'), }],[EditionConst.IS_EE, EditionConst.IS_PE],'OR'),
() => {
const to: any = get_next_route()
if (to.path.includes('resource-management')) {return RoleConst.ADMIN}
},
()=>{
const to: any = get_next_route()
if (to.path.includes('resource-management')) { return PermissionConst.RESOURCE_APPLICATION_ACCESS_READ}
},
] ]
}, },
component: () => import('@/views/application/ApplicationAccess.vue'), component: () => import('@/views/application/ApplicationAccess.vue'),
@ -109,7 +134,15 @@ const ApplicationDetailRouter = {
const to: any = get_next_route() const to: any = get_next_route()
return new ComplexPermission([],[PermissionConst.APPLICATION_CHAT_USER_READ.getApplicationWorkspaceResourcePermission( return new ComplexPermission([],[PermissionConst.APPLICATION_CHAT_USER_READ.getApplicationWorkspaceResourcePermission(
to ? to.params.id : '',)],[EditionConst.IS_EE, EditionConst.IS_PE],'OR') to ? to.params.id : '',)],[EditionConst.IS_EE, EditionConst.IS_PE],'OR')
} },
() => {
const to: any = get_next_route()
if (to.path.includes('resource-management')) {return RoleConst.ADMIN}
},
()=>{
const to: any = get_next_route()
if (to.path.includes('resource-management')) { return PermissionConst.RESOURCE_APPLICATION_CHAT_USER_READ}
},
] ]
}, },
component: () => import('@/views/chat-user/index.vue'), component: () => import('@/views/chat-user/index.vue'),
@ -135,7 +168,15 @@ const ApplicationDetailRouter = {
return PermissionConst.APPLICATION_CHAT_LOG_READ.getApplicationWorkspaceResourcePermission( return PermissionConst.APPLICATION_CHAT_LOG_READ.getApplicationWorkspaceResourcePermission(
to ? to.params.id : '', to ? to.params.id : '',
) )
} },
() => {
const to: any = get_next_route()
if (to.path.includes('resource-management')) {return RoleConst.ADMIN}
},
()=>{
const to: any = get_next_route()
if (to.path.includes('resource-management')) { return PermissionConst.RESOURCE_APPLICATION_CHAT_LOG_READ}
},
] ]
}, },
component: () => import('@/views/chat-log/index.vue'), component: () => import('@/views/chat-log/index.vue'),

View File

@ -259,7 +259,7 @@ const permissionObj = ref<any>({
[], [],
'OR', 'OR',
), ),
APPLICATION_KNOWLEDGE: [RoleConst.ADMIN, PermissionConst.RESOURCE_APPLICATION_CHAT_USER_EDIT], RESOURCE_APPLICATION: [RoleConst.ADMIN, PermissionConst.RESOURCE_APPLICATION_CHAT_USER_EDIT],
RESOURCE_KNOWLEDGE: [RoleConst.ADMIN, PermissionConst.RESOURCE_KNOWLEDGE_CHAT_USER_EDIT], RESOURCE_KNOWLEDGE: [RoleConst.ADMIN, PermissionConst.RESOURCE_KNOWLEDGE_CHAT_USER_EDIT],
SHAREDKNOWLEDGE: new ComplexPermission( SHAREDKNOWLEDGE: new ComplexPermission(
[RoleConst.ADMIN], [RoleConst.ADMIN],

View File

@ -241,19 +241,26 @@
effect="dark" effect="dark"
:content="$t('views.system.resource_management.management')" :content="$t('views.system.resource_management.management')"
placement="top" placement="top"
v-if="managePermission()"
> >
<span class="mr-8"> <span class="mr-8">
<el-button <el-button
type="primary" type="primary"
text text
:title="$t('views.system.resource_management.management')" :title="$t('views.system.resource_management.management')"
@click="goApp(row)" @click="
router.push({
path: `/application/resource-management/${row.id}/${row.type}/overview`,
})
"
> >
<AppIcon iconName="app-admin-operation"></AppIcon> <AppIcon iconName="app-admin-operation"></AppIcon>
</el-button> </el-button>
</span> </span>
</el-tooltip> </el-tooltip>
<el-dropdown trigger="click"> <el-dropdown trigger="click"
v-if="MoreFilledPermission()"
>
<el-button text @click.stop> <el-button text @click.stop>
<el-icon> <el-icon>
<MoreFilled /> <MoreFilled />
@ -295,9 +302,6 @@ import { datetimeFormat } from '@/utils/time'
import { loadPermissionApi } from '@/utils/dynamics-api/permission-api.ts' import { loadPermissionApi } from '@/utils/dynamics-api/permission-api.ts'
import { isWorkFlow } from '@/utils/application.ts' import { isWorkFlow } from '@/utils/application.ts'
import UserApi from '@/api/user/user.ts' import UserApi from '@/api/user/user.ts'
import { hasPermission } from '@/utils/permission'
import { ComplexPermission } from '@/utils/permission/type'
import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data'
import permissionMap from '@/permission' import permissionMap from '@/permission'
import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message' import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message'
@ -309,6 +313,19 @@ const permissionPrecise = computed(() => {
return permissionMap['application']['systemManage'] return permissionMap['application']['systemManage']
}) })
const managePermission = () => {
return permissionPrecise.value.overview_read() ||
permissionPrecise.value.access_read() ||
permissionPrecise.value.edit() ||
permissionPrecise.value.chat_log_read() ||
permissionPrecise.value.chat_user_read()
}
const MoreFilledPermission = () => {
return permissionPrecise.value.export() ||
permissionPrecise.value.delete()
}
const apiInputParams = ref([]) const apiInputParams = ref([])
function toChat(row: any) { function toChat(row: any) {
row?.work_flow?.nodes row?.work_flow?.nodes
@ -396,131 +413,6 @@ const paginationConfig = reactive({
total: 0, total: 0,
}) })
const goApp = (item: any) => {
router.push({ path: get_route(item) })
}
const get_route = (item: any) => {
if (
hasPermission(
[
new ComplexPermission(
[RoleConst.USER],
[PermissionConst.APPLICATION.getApplicationWorkspaceResourcePermission(item.id)],
[],
'AND',
),
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_OVERVIEW_READ.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.APPLICATION_OVERVIEW_READ.getApplicationWorkspaceResourcePermission(
item.id,
),
],
'OR',
)
) {
return `/application/resource-management/${item.id}/${item.type}/overview`
} else if (
hasPermission(
[
new ComplexPermission(
[RoleConst.USER],
[PermissionConst.APPLICATION.getApplicationWorkspaceResourcePermission(item.id)],
[],
'AND',
),
RoleConst.WORKSPACE_MANAGE.getWorkspaceRole,
PermissionConst.APPLICATION_EDIT.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.APPLICATION_EDIT.getApplicationWorkspaceResourcePermission(item.id),
],
'OR',
)
) {
if (item.type == 'WORK_FLOW') {
return `/application/resource-management/${item.id}/workflow`
} else {
return `/application/resource-management/${item.id}/${item.type}/setting`
}
} else if (
hasPermission(
[
new ComplexPermission(
[RoleConst.USER],
[PermissionConst.APPLICATION.getApplicationWorkspaceResourcePermission(item.id)],
[EditionConst.IS_EE, EditionConst.IS_PE],
'AND',
),
new ComplexPermission(
[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole],
[PermissionConst.APPLICATION_ACCESS_READ.getWorkspacePermissionWorkspaceManageRole],
[EditionConst.IS_EE, EditionConst.IS_PE],
'OR',
),
new ComplexPermission(
[],
[
PermissionConst.APPLICATION_ACCESS_READ.getApplicationWorkspaceResourcePermission(
item.id,
),
],
[EditionConst.IS_EE, EditionConst.IS_PE],
'OR',
),
],
'OR',
)
) {
return `/application/resource-management/${item.id}/${item.type}/access`
} else if (
hasPermission(
[
new ComplexPermission(
[RoleConst.USER],
[PermissionConst.APPLICATION.getApplicationWorkspaceResourcePermission(item.id)],
[EditionConst.IS_EE, EditionConst.IS_PE],
'AND',
),
new ComplexPermission(
[RoleConst.WORKSPACE_MANAGE.getWorkspaceRole],
[PermissionConst.APPLICATION_CHAT_USER_READ.getWorkspacePermissionWorkspaceManageRole],
[EditionConst.IS_EE, EditionConst.IS_PE],
'OR',
),
new ComplexPermission(
[],
[
PermissionConst.APPLICATION_CHAT_USER_READ.getApplicationWorkspaceResourcePermission(
item.id,
),
],
[EditionConst.IS_EE, EditionConst.IS_PE],
'OR',
),
],
'OR',
)
) {
return `/application/resource-management/${item.id}/${item.type}/chat-user`
} else if (
hasPermission(
[
new ComplexPermission(
[RoleConst.USER],
[PermissionConst.APPLICATION.getApplicationWorkspaceResourcePermission(item.id)],
[],
'AND',
),
PermissionConst.APPLICATION_CHAT_LOG_READ.getWorkspacePermissionWorkspaceManageRole,
PermissionConst.APPLICATION_CHAT_LOG_READ.getApplicationWorkspaceResourcePermission(
item.id,
),
],
'OR',
)
) {
return `/application/resource-management/${item.id}/${item.type}/chat-log`
} else return `/system/resource-management/application/`
}
const workspaceOptions = ref<any[]>([]) const workspaceOptions = ref<any[]>([])
const workspaceVisible = ref(false) const workspaceVisible = ref(false)