From 31d71d137a6d19986b05cd9ea56fe3481f7cf6fe Mon Sep 17 00:00:00 2001 From: zhangzhanwei Date: Mon, 18 Aug 2025 18:13:40 +0800 Subject: [PATCH] feat: Front end permissions for resource authorization --- .../permission/application/system-manage.ts | 1 + ui/src/permission/application/workspace.ts | 10 + ui/src/permission/knowledge/system-manage.ts | 1 + ui/src/permission/knowledge/system-share.ts | 1 + .../permission/knowledge/workspace-share.ts | 1 + ui/src/permission/knowledge/workspace.ts | 10 + ui/src/permission/model/system-manage.ts | 1 + ui/src/permission/model/system-share.ts | 1 + ui/src/permission/model/workspace.ts | 10 + ui/src/permission/tool/system-manage.ts | 1 + ui/src/permission/tool/system-share.ts | 1 + ui/src/permission/tool/workspace.ts | 10 + ui/src/utils/permission/data.ts | 13 ++ ui/src/views/application/index.vue | 199 +++++------------- .../component/KnowledgeListContainer.vue | 2 +- ui/src/views/model/component/ModelCard.vue | 2 +- .../tool/component/ToolListContainer.vue | 2 +- 17 files changed, 118 insertions(+), 148 deletions(-) diff --git a/ui/src/permission/application/system-manage.ts b/ui/src/permission/application/system-manage.ts index dfacb96b8..2369ea7e7 100644 --- a/ui/src/permission/application/system-manage.ts +++ b/ui/src/permission/application/system-manage.ts @@ -38,6 +38,7 @@ const systemManage = { 'OR' ), folderDelete: () => false, + auth: () => false, overview_embed: () => hasPermission( [ diff --git a/ui/src/permission/application/workspace.ts b/ui/src/permission/application/workspace.ts index 396ef53f9..59d913d1a 100644 --- a/ui/src/permission/application/workspace.ts +++ b/ui/src/permission/application/workspace.ts @@ -43,6 +43,16 @@ const workspace = { ], 'OR' ), + auth: (source_id:string) => + hasPermission( + [ + new ComplexPermission([RoleConst.USER],[PermissionConst.APPLICATION.getApplicationWorkspaceResourcePermission(source_id)],[],'AND'), + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + PermissionConst.APPLICATION_RESOURCE_AUTHORIZATION.getWorkspacePermissionWorkspaceManageRole, + PermissionConst.APPLICATION_RESOURCE_AUTHORIZATION.getApplicationWorkspaceResourcePermission(source_id) + ], + 'OR' + ), folderEdit: () => hasPermission( [ diff --git a/ui/src/permission/knowledge/system-manage.ts b/ui/src/permission/knowledge/system-manage.ts index 8f3662a66..6f88abe38 100644 --- a/ui/src/permission/knowledge/system-manage.ts +++ b/ui/src/permission/knowledge/system-manage.ts @@ -151,6 +151,7 @@ const systemManage = { ],'OR' ), + auth: () => false, folderCreate: () => false, folderEdit: () => false, folderDelete: () => false, diff --git a/ui/src/permission/knowledge/system-share.ts b/ui/src/permission/knowledge/system-share.ts index cc5fa6a8a..655be62b3 100644 --- a/ui/src/permission/knowledge/system-share.ts +++ b/ui/src/permission/knowledge/system-share.ts @@ -182,6 +182,7 @@ const share = { ], 'OR' ), + auth: () => false, folderCreate: () => false, folderEdit: () => false, folderDelete: () => false, diff --git a/ui/src/permission/knowledge/workspace-share.ts b/ui/src/permission/knowledge/workspace-share.ts index 8747d8a00..a7dc28dcf 100644 --- a/ui/src/permission/knowledge/workspace-share.ts +++ b/ui/src/permission/knowledge/workspace-share.ts @@ -10,6 +10,7 @@ const workspaceShare = { edit: () => false, export: () => false, delete: () => false, + auth: () => false, doc_read: () => false, doc_create: () => false, diff --git a/ui/src/permission/knowledge/workspace.ts b/ui/src/permission/knowledge/workspace.ts index b4e9d0030..5c42f8970 100644 --- a/ui/src/permission/knowledge/workspace.ts +++ b/ui/src/permission/knowledge/workspace.ts @@ -70,6 +70,16 @@ const workspace = { ], 'OR', ), + auth: (source_id:string) => + hasPermission( + [ + new ComplexPermission([RoleConst.USER],[PermissionConst.KNOWLEDGE.getKnowledgeWorkspaceResourcePermission(source_id)],[],'AND'), + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + PermissionConst.KNOWLEDGE_RESOURCE_AUTHORIZATION.getKnowledgeWorkspaceResourcePermission(source_id), + PermissionConst.KNOWLEDGE_RESOURCE_AUTHORIZATION.getWorkspacePermissionWorkspaceManageRole, + ], + 'OR', + ), folderEdit: () => hasPermission( [ diff --git a/ui/src/permission/model/system-manage.ts b/ui/src/permission/model/system-manage.ts index decfebc78..104323306 100644 --- a/ui/src/permission/model/system-manage.ts +++ b/ui/src/permission/model/system-manage.ts @@ -20,6 +20,7 @@ const systemManage = { delete: () => hasPermission([RoleConst.ADMIN, PermissionConst.RESOURCE_MODEL_DELETE], 'OR'), + auth: () => false, folderCreate: () => false, folderEdit: () => false, folderDelete: () => false, diff --git a/ui/src/permission/model/system-share.ts b/ui/src/permission/model/system-share.ts index 635d52f42..0c025fe53 100644 --- a/ui/src/permission/model/system-share.ts +++ b/ui/src/permission/model/system-share.ts @@ -35,6 +35,7 @@ const share = { ], 'OR', ), + auth: () => false, folderCreate: () => false, folderEdit: () => false, folderDelete: () => false, diff --git a/ui/src/permission/model/workspace.ts b/ui/src/permission/model/workspace.ts index 6992ed400..089558674 100644 --- a/ui/src/permission/model/workspace.ts +++ b/ui/src/permission/model/workspace.ts @@ -40,6 +40,16 @@ const workspace = { ], 'OR' ), + auth: (source_id:string) => + hasPermission( + [ + new ComplexPermission([RoleConst.USER],[PermissionConst.MODEL.getModelWorkspaceResourcePermission(source_id)],[],'AND'), + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + PermissionConst.MODEL_RESOURCE_AUTHORIZATION.getModelWorkspaceResourcePermission(source_id), + PermissionConst.MODEL_RESOURCE_AUTHORIZATION.getWorkspacePermissionWorkspaceManageRole + ], + 'OR' + ), folderEdit: () => hasPermission( [ diff --git a/ui/src/permission/tool/system-manage.ts b/ui/src/permission/tool/system-manage.ts index 7c36c1eb0..bbac81d66 100644 --- a/ui/src/permission/tool/system-manage.ts +++ b/ui/src/permission/tool/system-manage.ts @@ -57,6 +57,7 @@ const systemManage = { 'OR', ), + auth: () => false, folderCreate: () => false, folderEdit: () => false, folderDelete: () => false, diff --git a/ui/src/permission/tool/system-share.ts b/ui/src/permission/tool/system-share.ts index 95d3698ad..b5b77b015 100644 --- a/ui/src/permission/tool/system-share.ts +++ b/ui/src/permission/tool/system-share.ts @@ -68,6 +68,7 @@ const share = { 'OR', ), + auth: () => false, folderCreate: () => false, folderEdit: () => false, folderDelete: () => false, diff --git a/ui/src/permission/tool/workspace.ts b/ui/src/permission/tool/workspace.ts index 666b7906e..197539802 100644 --- a/ui/src/permission/tool/workspace.ts +++ b/ui/src/permission/tool/workspace.ts @@ -110,6 +110,16 @@ const workspace = { ], 'OR' ), + auth: (source_id:string) => + hasPermission( + [ + new ComplexPermission([RoleConst.USER],[PermissionConst.TOOL.getToolWorkspaceResourcePermission(source_id)],[],'AND'), + RoleConst.WORKSPACE_MANAGE.getWorkspaceRole, + PermissionConst.TOOL_RESOURCE_AUTHORIZATION.getToolWorkspaceResourcePermission(source_id), + PermissionConst.TOOL_RESOURCE_AUTHORIZATION.getWorkspacePermissionWorkspaceManageRole + ], + 'OR' + ), debug: () => hasPermission( [ diff --git a/ui/src/utils/permission/data.ts b/ui/src/utils/permission/data.ts index 40ce97979..c43345fe6 100644 --- a/ui/src/utils/permission/data.ts +++ b/ui/src/utils/permission/data.ts @@ -296,6 +296,19 @@ const PermissionConst = { CHANGE_PASSWORD: new Permission('OTHER:READ+CREATE'), SYSTEM_API_KEY_EDIT: new Permission('OTHER:READ+DELETE'), + APPLICATION_RESOURCE_AUTHORIZATION: new Permission( + 'APPLICATION:READ+AUTH', + ), + KNOWLEDGE_RESOURCE_AUTHORIZATION: new Permission( + 'KNOWLEDGE:READ+AUTH', + ), + TOOL_RESOURCE_AUTHORIZATION: new Permission( + 'TOOL:READ+AUTH', + ), + MODEL_RESOURCE_AUTHORIZATION: new Permission( + 'MODEL:READ+AUTH', + ), + APPLICATION_WORKSPACE_USER_RESOURCE_PERMISSION_READ: new Permission( 'APPLICATION_WORKSPACE_USER_RESOURCE_PERMISSION:READ', ), diff --git a/ui/src/views/application/index.vue b/ui/src/views/application/index.vue index 0b0a81aa5..5eca3eb29 100644 --- a/ui/src/views/application/index.vue +++ b/ui/src/views/application/index.vue @@ -3,13 +3,8 @@ @@ -19,44 +14,22 @@ -
- +
+