From 594052e264a1eb34b72f1cb6198efa5ef6bb2078 Mon Sep 17 00:00:00 2001 From: panxinying Date: Sun, 20 Sep 2026 12:59:51 +0800 Subject: [PATCH] feat: Permission gating for system menus --- ui/src/permission/core/data.ts | 12 +- .../permission/modules/application/index.ts | 6 +- .../permission/modules/application/system.ts | 8 +- ui/src/permission/modules/index.ts | 23 +- ui/src/permission/modules/knowledge/index.ts | 10 +- ui/src/permission/modules/knowledge/share.ts | 8 +- ui/src/permission/modules/knowledge/system.ts | 8 +- ui/src/permission/modules/model/index.ts | 12 +- ui/src/permission/modules/model/share.ts | 8 +- ui/src/permission/modules/model/system.ts | 7 +- .../permission/modules/system/appearance.ts | 11 +- .../modules/system/authorization.ts | 36 ++- ui/src/permission/modules/system/chatAuth.ts | 10 +- ui/src/permission/modules/system/chatUser.ts | 15 +- .../modules/system/chatUserGroup.ts | 17 +- ui/src/permission/modules/system/email.ts | 6 +- ui/src/permission/modules/system/homepage.ts | 11 +- ui/src/permission/modules/system/index.ts | 58 +++- ui/src/permission/modules/system/loginAuth.ts | 11 +- .../permission/modules/system/operationLog.ts | 10 +- ui/src/permission/modules/system/other.ts | 11 +- ui/src/permission/modules/system/portal.ts | 6 +- .../modules/system/resourcePermission.ts | 19 +- ui/src/permission/modules/system/role.ts | 12 +- ui/src/permission/modules/system/user.ts | 3 + ui/src/permission/modules/system/userGroup.ts | 18 +- ui/src/permission/modules/system/workspace.ts | 12 +- ui/src/permission/modules/tool/index.ts | 9 +- ui/src/permission/modules/tool/share.ts | 8 +- ui/src/permission/modules/tool/system.ts | 8 +- ui/src/router/admin/system/index.ts | 257 ++++++++++++++++-- 31 files changed, 536 insertions(+), 114 deletions(-) diff --git a/ui/src/permission/core/data.ts b/ui/src/permission/core/data.ts index a3857e53bb6..a92246b38cf 100644 --- a/ui/src/permission/core/data.ts +++ b/ui/src/permission/core/data.ts @@ -138,12 +138,12 @@ export const PermissionConstants = { // ==================== RESOURCE_PERMISSION ==================== APPLICATION_RESOURCE_PERMISSION_READ: p(Group.RESOURCE_PERMISSION, Group.APPLICATION_RESOURCE_PERMISSION, Operate.READ, 0), APPLICATION_RESOURCE_PERMISSION_EDIT: p(Group.RESOURCE_PERMISSION, Group.APPLICATION_RESOURCE_PERMISSION, Operate.EDIT, 1), - KNOWLEDGE_RESOURCE_PERMISSION_READ: p(Group.RESOURCE_PERMISSION, Group.KNOWLEDGE_RESOURCE_PERMISSION, Operate.READ, 0), - KNOWLEDGE_RESOURCE_PERMISSION_EDIT: p(Group.RESOURCE_PERMISSION, Group.KNOWLEDGE_RESOURCE_PERMISSION, Operate.EDIT, 1), - TOOL_RESOURCE_PERMISSION_READ: p(Group.RESOURCE_PERMISSION, Group.TOOL_RESOURCE_PERMISSION, Operate.READ, 0), - TOOL_RESOURCE_PERMISSION_EDIT: p(Group.RESOURCE_PERMISSION, Group.TOOL_RESOURCE_PERMISSION, Operate.EDIT, 1), - MODEL_RESOURCE_PERMISSION_READ: p(Group.RESOURCE_PERMISSION, Group.MODEL_RESOURCE_PERMISSION, Operate.READ, 0), - MODEL_RESOURCE_PERMISSION_EDIT: p(Group.RESOURCE_PERMISSION, Group.MODEL_RESOURCE_PERMISSION, Operate.EDIT, 1), + KNOWLEDGE_RESOURCE_PERMISSION_READ: p(Group.RESOURCE_PERMISSION, Group.KNOWLEDGE_RESOURCE_PERMISSION, Operate.READ, 2), + KNOWLEDGE_RESOURCE_PERMISSION_EDIT: p(Group.RESOURCE_PERMISSION, Group.KNOWLEDGE_RESOURCE_PERMISSION, Operate.EDIT, 3), + TOOL_RESOURCE_PERMISSION_READ: p(Group.RESOURCE_PERMISSION, Group.TOOL_RESOURCE_PERMISSION, Operate.READ, 4), + TOOL_RESOURCE_PERMISSION_EDIT: p(Group.RESOURCE_PERMISSION, Group.TOOL_RESOURCE_PERMISSION, Operate.EDIT, 5), + MODEL_RESOURCE_PERMISSION_READ: p(Group.RESOURCE_PERMISSION, Group.MODEL_RESOURCE_PERMISSION, Operate.READ, 6), + MODEL_RESOURCE_PERMISSION_EDIT: p(Group.RESOURCE_PERMISSION, Group.MODEL_RESOURCE_PERMISSION, Operate.EDIT, 7), // ==================== EMAIL_SETTING ==================== EMAIL_SETTING_READ: p(Group.EMAIL_SETTING, Group.EMAIL_SETTING, Operate.READ, 0), diff --git a/ui/src/permission/modules/application/index.ts b/ui/src/permission/modules/application/index.ts index 63f953db865..d8713fe7e16 100644 --- a/ui/src/permission/modules/application/index.ts +++ b/ui/src/permission/modules/application/index.ts @@ -3,4 +3,8 @@ import workspace from './workspace' import system from './system' -export default { workspace, system } +export default { workspace, + /** + * 系统「应用」权限 + * */ + system } diff --git a/ui/src/permission/modules/application/system.ts b/ui/src/permission/modules/application/system.ts index 89a61c6f8ff..152891b503c 100644 --- a/ui/src/permission/modules/application/system.ts +++ b/ui/src/permission/modules/application/system.ts @@ -4,7 +4,8 @@ */ import { canSys } from '../../policy' -import { PermissionConstants as P } from '../../core' +import { PermissionConstants as P,hasEdition} from '../../core' +import { Edition } from '@/permission/core/common' const system = { // —— 系统页不提供的操作 —— @@ -53,7 +54,10 @@ const system = { chatLogAddKnowledge: () => canSys(P.RESOURCE_APPLICATION_CHAT_LOG_ADD_KNOWLEDGE), // —— 组合:跳转/进入应用 —— - jumpRead: () => canSys(P.RESOURCE_APPLICATION_OVERVIEW_READ) || canSys(P.RESOURCE_APPLICATION_READ), + /** + * 系统「应用资源管理」(系统 > 资源管理 > 应用)进入权限 + * */ + jumpRead: () => canSys(P.RESOURCE_APPLICATION_READ) && hasEdition(Edition.PE), } export default system diff --git a/ui/src/permission/modules/index.ts b/ui/src/permission/modules/index.ts index 647481d01e5..25b77842422 100644 --- a/ui/src/permission/modules/index.ts +++ b/ui/src/permission/modules/index.ts @@ -12,4 +12,25 @@ import model from './model' import system from './system' import trigger from './trigger' -export default { application, knowledge, tool, model, trigger, system } +export default { + /** + *「应用」在各场景下的按钮权限 + * */ + application, + /** + * 「知识库」各场景按钮权限 + * */ + knowledge, + /** + * 「工具」各场景按钮权限 + * */ + tool, + /** + * 「模型」各场景按钮权限 + * */ + model, + trigger, + /** + * 「系统全局」按钮权限 + * */ + system } diff --git a/ui/src/permission/modules/knowledge/index.ts b/ui/src/permission/modules/knowledge/index.ts index a59d8438955..90b7cfb6d42 100644 --- a/ui/src/permission/modules/knowledge/index.ts +++ b/ui/src/permission/modules/knowledge/index.ts @@ -4,4 +4,12 @@ import workspace from './workspace' import system from './system' import share from './share' -export default { workspace, system, share } +export default { workspace, + /** + * 系统「知识库」权限 + * */ + system, + /** + * 系统「共享知识库」权限 + * */ + share } diff --git a/ui/src/permission/modules/knowledge/share.ts b/ui/src/permission/modules/knowledge/share.ts index 98f4f07f5e2..ecef70066c2 100644 --- a/ui/src/permission/modules/knowledge/share.ts +++ b/ui/src/permission/modules/knowledge/share.ts @@ -1,7 +1,8 @@ /** 系统「共享知识库」按钮权限(系统 > 共享 > 知识库)。全局判定,无 id。 */ import { canSys } from '../../policy' -import { PermissionConstants as P } from '../../core' +import { PermissionConstants as P,hasEdition} from '../../core' +import { Edition } from '@/permission/core/common' const share = { // —— 共享页不提供 —— @@ -74,7 +75,10 @@ const share = { knowledgeChatUserEdit: () => canSys(P.SHARED_KNOWLEDGE_CHAT_USER_EDIT), // —— 组合:进入知识库 —— - jumpRead: () => canSys(P.SHARED_KNOWLEDGE_DOCUMENT_READ) || canSys(P.SHARED_KNOWLEDGE_WORKFLOW_READ), + /** + * 系统「共享知识库」(系统 > 共享 > 知识库)进入权限 + * */ + jumpRead: () => canSys(P.SHARED_KNOWLEDGE_WORKFLOW_READ) && hasEdition(Edition.PE), } export default share diff --git a/ui/src/permission/modules/knowledge/system.ts b/ui/src/permission/modules/knowledge/system.ts index 30c634f0c48..bb838409473 100644 --- a/ui/src/permission/modules/knowledge/system.ts +++ b/ui/src/permission/modules/knowledge/system.ts @@ -1,7 +1,8 @@ /** 系统「知识库资源管理」按钮权限(系统 > 资源管理 > 知识库)。全局判定,无 id。 */ import { canSys } from '../../policy' -import { PermissionConstants as P } from '../../core' +import { PermissionConstants as P,hasEdition} from '../../core' +import { Edition } from '@/permission/core/common' const system = { // —— 系统页不提供 —— @@ -75,7 +76,10 @@ const system = { knowledgeChatUserEdit: () => canSys(P.RESOURCE_KNOWLEDGE_CHAT_USER_EDIT), // —— 组合:进入知识库 —— - jumpRead: () => canSys(P.RESOURCE_KNOWLEDGE_DOCUMENT_READ), + /** + * 系统「知识库资源管理」(系统 > 资源管理 > 知识库)进入权限 + * */ + jumpRead: () => canSys(P.RESOURCE_KNOWLEDGE_DOCUMENT_READ) && hasEdition(Edition.PE), } export default system diff --git a/ui/src/permission/modules/model/index.ts b/ui/src/permission/modules/model/index.ts index 8381fbbf08f..8cba62d77cb 100644 --- a/ui/src/permission/modules/model/index.ts +++ b/ui/src/permission/modules/model/index.ts @@ -4,4 +4,14 @@ import workspace from './workspace' import system from './system' import share from './share' -export default { workspace, system, share } +export default { + workspace, + /** + * 系统「模型」权限 + * */ + system, + /** + * 系统「共享模型」权限 + * */ + share, +} diff --git a/ui/src/permission/modules/model/share.ts b/ui/src/permission/modules/model/share.ts index 95d1ddd5e70..d5b5d1286e9 100644 --- a/ui/src/permission/modules/model/share.ts +++ b/ui/src/permission/modules/model/share.ts @@ -1,7 +1,8 @@ /** 系统「共享模型」按钮权限(系统 > 共享 > 模型)。全局判定,无 id。 */ import { canSys } from '../../policy' -import { PermissionConstants as P } from '../../core' +import { PermissionConstants as P,hasEdition} from '../../core' +import { Edition } from '@/permission/core/common' const share = { // —— 共享页不提供 —— @@ -16,6 +17,11 @@ const share = { folderAuth: () => false, folderManage: () => false, + /** + * 系统「共享模型」(系统 > 共享 > 模型)只读权限 + */ + read: () => canSys(P.SHARED_MODEL_READ) && hasEdition(Edition.PE), + // —— 模型资源 —— create: () => canSys(P.SHARED_MODEL_CREATE), modify: () => canSys(P.SHARED_MODEL_EDIT), diff --git a/ui/src/permission/modules/model/system.ts b/ui/src/permission/modules/model/system.ts index df689595ae2..f72783359ad 100644 --- a/ui/src/permission/modules/model/system.ts +++ b/ui/src/permission/modules/model/system.ts @@ -1,7 +1,8 @@ /** 系统「模型资源管理」按钮权限(系统 > 资源管理 > 模型)。全局判定,无 id。 */ import { canSys } from '../../policy' -import { PermissionConstants as P } from '../../core' +import { PermissionConstants as P,hasEdition} from '../../core' +import { Edition } from '@/permission/core/common' const system = { // —— 系统页不提供 —— @@ -16,6 +17,10 @@ const system = { folderAuth: () => false, folderManage: () => false, + /** + * 系统「模型资源管理」(系统 > 资源管理 > 模型)只读权限 + * */ + read: () => canSys(P.RESOURCE_MODEL_READ) && hasEdition(Edition.PE), isShare: () => canSys(P.MODEL_READ), // —— 模型资源 —— diff --git a/ui/src/permission/modules/system/appearance.ts b/ui/src/permission/modules/system/appearance.ts index 44798f77777..9a1b85760fe 100644 --- a/ui/src/permission/modules/system/appearance.ts +++ b/ui/src/permission/modules/system/appearance.ts @@ -1,6 +1,13 @@ /** 系统「外观设置」按钮权限。$perm.appearance.* */ import { canSys } from '../../policy' -import { PermissionConstants as P } from '../../core' +import { PermissionConstants as P,hasEdition} from '../../core' +import { Edition } from '@/permission/core/common' -export default { read: () => canSys(P.APPEARANCE_SETTINGS_READ), edit: () => canSys(P.APPEARANCE_SETTINGS_EDIT) } +export default { + /** + * 系统「外观设置」只读权限 + */ + read: () => canSys(P.APPEARANCE_SETTINGS_READ) && hasEdition(Edition.PE), + edit: () => canSys(P.APPEARANCE_SETTINGS_EDIT) + } diff --git a/ui/src/permission/modules/system/authorization.ts b/ui/src/permission/modules/system/authorization.ts index cb5ad7b1d4c..4b586fcb52a 100644 --- a/ui/src/permission/modules/system/authorization.ts +++ b/ui/src/permission/modules/system/authorization.ts @@ -4,8 +4,36 @@ import { canSys } from '../../policy' import { PermissionConstants as P } from '../../core' export default { - application: { read: () => canSys(P.APPLICATION_RESOURCE_PERMISSION_READ), edit: () => canSys(P.APPLICATION_RESOURCE_PERMISSION_EDIT) }, - knowledge: { read: () => canSys(P.KNOWLEDGE_RESOURCE_PERMISSION_READ), edit: () => canSys(P.KNOWLEDGE_RESOURCE_PERMISSION_EDIT) }, - tool: { read: () => canSys(P.TOOL_RESOURCE_PERMISSION_READ), edit: () => canSys(P.TOOL_RESOURCE_PERMISSION_EDIT) }, - model: { read: () => canSys(P.MODEL_RESOURCE_PERMISSION_READ), edit: () => canSys(P.MODEL_RESOURCE_PERMISSION_EDIT) }, + /** + * 系统「资源授权」智能体权限 + * */ + application: { + /** + * 系统「资源授权」智能体只读权限 + * */ + read: () => canSys(P.APPLICATION_RESOURCE_PERMISSION_READ), edit: () => canSys(P.APPLICATION_RESOURCE_PERMISSION_EDIT) }, + /** + * 系统「资源授权」知识库权限 + * */ + knowledge: { + /** + * 系统「资源授权」知识库只读权限 + * */ + read: () => canSys(P.KNOWLEDGE_RESOURCE_PERMISSION_READ), edit: () => canSys(P.KNOWLEDGE_RESOURCE_PERMISSION_EDIT) }, + /** + * 系统「资源授权」工具权限 + * */ + tool: { + /** + * 系统「资源授权」工具只读权限 + * */ + read: () => canSys(P.TOOL_RESOURCE_PERMISSION_READ), edit: () => canSys(P.TOOL_RESOURCE_PERMISSION_EDIT) }, + /** + * 系统「资源授权」模型权限 + * */ + model: { + /** + * 系统「资源授权」模型只读权限 + * */ + read: () => canSys(P.MODEL_RESOURCE_PERMISSION_READ), edit: () => canSys(P.MODEL_RESOURCE_PERMISSION_EDIT) }, } diff --git a/ui/src/permission/modules/system/chatAuth.ts b/ui/src/permission/modules/system/chatAuth.ts index 1399548d480..4d933a28107 100644 --- a/ui/src/permission/modules/system/chatAuth.ts +++ b/ui/src/permission/modules/system/chatAuth.ts @@ -1,6 +1,12 @@ /** 系统「对话用户认证」按钮权限。$perm.chatAuth.* */ import { canSys } from '../../policy' -import { PermissionConstants as P } from '../../core' +import { PermissionConstants as P,hasEdition} from '../../core' +import { Edition } from '@/permission/core/common' -export default { edit: () => canSys(P.CHAT_USER_AUTH_EDIT) } +export default { + /** + * 系统「对话用户认证」编辑权限 + */ + edit: () => canSys(P.CHAT_USER_AUTH_EDIT) && hasEdition(Edition.PE) + } diff --git a/ui/src/permission/modules/system/chatUser.ts b/ui/src/permission/modules/system/chatUser.ts index beafcccc5bb..fe29812b8ae 100644 --- a/ui/src/permission/modules/system/chatUser.ts +++ b/ui/src/permission/modules/system/chatUser.ts @@ -1,14 +1,17 @@ /** 系统「对话用户」按钮权限。$perm.chatUser.* */ import { canSys } from '../../policy' -import { PermissionConstants as P } from '../../core' +import { PermissionConstants as P, hasPermission, RoleConstants, Compare} from '../../core' export default { - read: () => canSys(P.CHAT_USER_READ), - create: () => canSys(P.CHAT_USER_CREATE), + /** + * 系统「对话用户」只读权限 + */ + read: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.CHAT_USER_READ],Compare.OR), + create: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.CHAT_USER_CREATE],Compare.OR), sync: () => canSys(P.CHAT_USER_SYNC), - edit: () => canSys(P.CHAT_USER_EDIT), - delete: () => canSys(P.CHAT_USER_DELETE), - userGroup: () => canSys(P.CHAT_USER_GROUP), + edit: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.CHAT_USER_EDIT],Compare.OR), + delete: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.CHAT_USER_DELETE],Compare.OR), + userGroup: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.CHAT_USER_GROUP],Compare.OR), quotaSetting: () => canSys(P.CHAT_USER_QUOTA_SETTING), } diff --git a/ui/src/permission/modules/system/chatUserGroup.ts b/ui/src/permission/modules/system/chatUserGroup.ts index 33096b9947c..5e55575044f 100644 --- a/ui/src/permission/modules/system/chatUserGroup.ts +++ b/ui/src/permission/modules/system/chatUserGroup.ts @@ -1,14 +1,17 @@ /** 系统「对话用户组」按钮权限。$perm.chatUserGroup.* */ import { canSys } from '../../policy' -import { PermissionConstants as P } from '../../core' +import { PermissionConstants as P, hasPermission, RoleConstants, Compare} from '../../core' export default { - read: () => canSys(P.USER_GROUP_READ), - create: () => canSys(P.USER_GROUP_CREATE), - edit: () => canSys(P.USER_GROUP_EDIT), - delete: () => canSys(P.USER_GROUP_DELETE), - addMember: () => canSys(P.USER_GROUP_ADD_MEMBER), - removeMember: () => canSys(P.USER_GROUP_REMOVE_MEMBER), + /** + * 系统「对话用户组」只读权限 + */ + read: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.USER_GROUP_READ],Compare.OR), + create: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.USER_GROUP_CREATE],Compare.OR), + edit: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.USER_GROUP_EDIT],Compare.OR), + delete: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.USER_GROUP_DELETE],Compare.OR), + addMember: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.USER_GROUP_ADD_MEMBER],Compare.OR), + removeMember: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.USER_GROUP_REMOVE_MEMBER],Compare.OR), authRead: () => canSys(P.CHAT_USER_AUTH_READ), } diff --git a/ui/src/permission/modules/system/email.ts b/ui/src/permission/modules/system/email.ts index db043639e3e..09bdc02ac84 100644 --- a/ui/src/permission/modules/system/email.ts +++ b/ui/src/permission/modules/system/email.ts @@ -3,4 +3,8 @@ import { canSys } from '../../policy' import { PermissionConstants as P } from '../../core' -export default { read: () => canSys(P.EMAIL_SETTING_READ), edit: () => canSys(P.EMAIL_SETTING_EDIT) } +export default { + /** + * 系统「邮箱设置」只读权限 + */ + read: () => canSys(P.EMAIL_SETTING_READ), edit: () => canSys(P.EMAIL_SETTING_EDIT) } diff --git a/ui/src/permission/modules/system/homepage.ts b/ui/src/permission/modules/system/homepage.ts index f6720a9a5c5..056356d5973 100644 --- a/ui/src/permission/modules/system/homepage.ts +++ b/ui/src/permission/modules/system/homepage.ts @@ -1,6 +1,11 @@ /** 系统「首页」按钮权限 → $perm.homepage.* */ -import { canSys } from '../../policy' -import { PermissionConstants as P } from '../../core' +import { PermissionConstants as P, hasPermission, RoleConstants, Compare} from '../../core' -export default { read: () => canSys(P.HOMEPAGE_READ), export: () => canSys(P.HOMEPAGE_EXPORT) } +export default { + /** + * 系统「首页」只读权限 + */ + read: () => hasPermission([RoleConstants.ADMIN,P.HOMEPAGE_READ],Compare.OR), + export: () => hasPermission([RoleConstants.ADMIN,P.HOMEPAGE_EXPORT],Compare.OR) +} diff --git a/ui/src/permission/modules/system/index.ts b/ui/src/permission/modules/system/index.ts index f1df7bc72f3..2a9540e2ae7 100644 --- a/ui/src/permission/modules/system/index.ts +++ b/ui/src/permission/modules/system/index.ts @@ -17,4 +17,60 @@ import appearance from './appearance' import email from './email' import operationLog from './operationLog' import homepage from './homepage' -export default { user, workspace,homepage, role, userGroup, authorization, chatUser, chatUserGroup, chatAuth, portal, loginAuth, appearance, email, operationLog } +export default { + /** + * 系统「用户管理」按钮权限 + * */ + user, + /** + * 系统「工作空间」实体管理按钮权限 + * */ + workspace, + /** + * 系统「首页」按钮权限 + * */ + homepage, + /** + * 系统「角色管理」按钮权限 + * */ + role, + /** + * 系统「用户组」按钮权限 + * */ + userGroup, + /** + * 系统「资源授权」按钮权限(按资源类型分组) + * */ + authorization, + /** + * 系统「对话用户」按钮权限 + */ + chatUser, + /** + * 系统「对话用户组」按钮权限 + */ + chatUserGroup, + /** + * 系统「对话用户认证」按钮权限 + */ + chatAuth, + /** + * 系统「门户访问设置」按钮权限 + */ + portal, + /** + * 系统「用户认证」按钮权限 + */ + loginAuth, + /** + * 系统「外观设置」按钮权限 + */ + appearance, + /** + * 系统「邮箱设置」按钮权限 + */ + email, + /** + * 系统「操作日志」按钮权限 + */ + operationLog } diff --git a/ui/src/permission/modules/system/loginAuth.ts b/ui/src/permission/modules/system/loginAuth.ts index 202ce7b733b..9e33e8999f7 100644 --- a/ui/src/permission/modules/system/loginAuth.ts +++ b/ui/src/permission/modules/system/loginAuth.ts @@ -1,6 +1,13 @@ /** 系统「用户认证」按钮权限。$perm.loginAuth.* */ import { canSys } from '../../policy' -import { PermissionConstants as P } from '../../core' +import { PermissionConstants as P,hasEdition} from '../../core' +import { Edition } from '@/permission/core/common' -export default { read: () => canSys(P.LOGIN_AUTH_READ), edit: () => canSys(P.LOGIN_AUTH_EDIT) } +export default { + /** + * 系统「用户认证」只读权限 + */ + read: () => canSys(P.LOGIN_AUTH_READ) && hasEdition(Edition.PE), + edit: () => canSys(P.LOGIN_AUTH_EDIT) + } diff --git a/ui/src/permission/modules/system/operationLog.ts b/ui/src/permission/modules/system/operationLog.ts index edff21a2c2d..9e9d6aedefb 100644 --- a/ui/src/permission/modules/system/operationLog.ts +++ b/ui/src/permission/modules/system/operationLog.ts @@ -1,6 +1,12 @@ /** 系统「操作日志」按钮权限。$perm.operationLog.* */ import { canSys } from '../../policy' -import { PermissionConstants as P } from '../../core' +import { PermissionConstants as P,hasEdition} from '../../core' +import { Edition } from '@/permission/core/common' -export default { read: () => canSys(P.OPERATION_LOG_READ), export: () => canSys(P.OPERATION_LOG_EXPORT), clearPolicy: () => canSys(P.OPERATION_LOG_CLEAR_POLICY) } +export default { + /** + * 系统「操作日志」只读权限 + */ + read: () => canSys(P.OPERATION_LOG_READ) && hasEdition(Edition.PE), + export: () => canSys(P.OPERATION_LOG_EXPORT), clearPolicy: () => canSys(P.OPERATION_LOG_CLEAR_POLICY) } diff --git a/ui/src/permission/modules/system/other.ts b/ui/src/permission/modules/system/other.ts index 2f1321bf175..6f87643dcd8 100644 --- a/ui/src/permission/modules/system/other.ts +++ b/ui/src/permission/modules/system/other.ts @@ -1,12 +1,13 @@ /** 系统「其他/关于」类按钮权限 → $perm.other.* */ import { canSys } from '../../policy' -import { PermissionConstants as P } from '../../core' +import { PermissionConstants as P, hasPermission, RoleConstants, Compare} from '../../core' export default { - about: () => canSys(P.ABOUT_READ), + about: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.ABOUT_READ],Compare.OR), + SWITCH_LANGUAGE: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.SWITCH_LANGUAGE],Compare.OR), license: () => canSys(P.LICENSE_UPDATE), - changePassword: () => canSys(P.CHANGE_PASSWORD), - systemApiKey: () => canSys(P.SYSTEM_API_KEY_EDIT), - portal: () => canSys(P.PORTAL), + changePassword: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.CHANGE_PASSWORD],Compare.OR), + systemApiKey: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.SYSTEM_API_KEY_EDIT],Compare.OR), + portal: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.PORTAL],Compare.OR), } diff --git a/ui/src/permission/modules/system/portal.ts b/ui/src/permission/modules/system/portal.ts index f41579cf372..c0b42d88019 100644 --- a/ui/src/permission/modules/system/portal.ts +++ b/ui/src/permission/modules/system/portal.ts @@ -3,4 +3,8 @@ import { canSys } from '../../policy' import { PermissionConstants as P } from '../../core' -export default { read: () => canSys(P.PORTAL_READ), edit: () => canSys(P.PORTAL_EDIT) } +export default { + /** + * 系统「门户访问设置」只读权限 + */ + read: () => canSys(P.PORTAL_READ), edit: () => canSys(P.PORTAL_EDIT) } diff --git a/ui/src/permission/modules/system/resourcePermission.ts b/ui/src/permission/modules/system/resourcePermission.ts index 7827b036f68..9635c01343c 100644 --- a/ui/src/permission/modules/system/resourcePermission.ts +++ b/ui/src/permission/modules/system/resourcePermission.ts @@ -1,15 +1,14 @@ /** 系统「授权管理」(资源权限)按钮权限 → $perm.resourcePermission.* */ -import { canSys } from '../../policy' -import { PermissionConstants as P } from '../../core' +import { PermissionConstants as P, hasPermission, RoleConstants, Compare} from '../../core' export default { - applicationRead: () => canSys(P.APPLICATION_RESOURCE_PERMISSION_READ), - applicationEdit: () => canSys(P.APPLICATION_RESOURCE_PERMISSION_EDIT), - knowledgeRead: () => canSys(P.KNOWLEDGE_RESOURCE_PERMISSION_READ), - knowledgeEdit: () => canSys(P.KNOWLEDGE_RESOURCE_PERMISSION_EDIT), - toolRead: () => canSys(P.TOOL_RESOURCE_PERMISSION_READ), - toolEdit: () => canSys(P.TOOL_RESOURCE_PERMISSION_EDIT), - modelRead: () => canSys(P.MODEL_RESOURCE_PERMISSION_READ), - modelEdit: () => canSys(P.MODEL_RESOURCE_PERMISSION_EDIT), + applicationRead: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.APPLICATION_READ],Compare.OR), + applicationEdit: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.APPLICATION_EDIT],Compare.OR), + knowledgeRead: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.KNOWLEDGE_READ],Compare.OR), + knowledgeEdit: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.KNOWLEDGE_EDIT],Compare.OR), + toolRead: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.TOOL_READ],Compare.OR), + toolEdit: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.TOOL_EDIT],Compare.OR), + modelRead: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.MODEL_READ],Compare.OR), + modelEdit: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.MODEL_EDIT],Compare.OR), } diff --git a/ui/src/permission/modules/system/role.ts b/ui/src/permission/modules/system/role.ts index ce6782e744b..b5d3184be0b 100644 --- a/ui/src/permission/modules/system/role.ts +++ b/ui/src/permission/modules/system/role.ts @@ -1,13 +1,17 @@ /** 系统「角色管理」按钮权限。$perm.role.* */ import { canSys } from '../../policy' -import { PermissionConstants as P } from '../../core' +import { PermissionConstants as P, hasPermission, RoleConstants, Compare,hasEdition} from '../../core' +import { Edition } from '@/permission/core/common' export default { - read: () => canSys(P.ROLE_READ), + /** + * 系统「角色管理」只读权限 + * */ + read: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.ROLE_READ],Compare.OR) && hasEdition(Edition.PE), create: () => canSys(P.ROLE_CREATE), edit: () => canSys(P.ROLE_EDIT), delete: () => canSys(P.ROLE_DELETE), - addMember: () => canSys(P.ROLE_ADD_MEMBER), - removeMember: () => canSys(P.ROLE_REMOVE_MEMBER), + addMember: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.ROLE_ADD_MEMBER],Compare.OR), + removeMember: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.ROLE_REMOVE_MEMBER],Compare.OR), } diff --git a/ui/src/permission/modules/system/user.ts b/ui/src/permission/modules/system/user.ts index d1dfe7a7713..19916b45e59 100644 --- a/ui/src/permission/modules/system/user.ts +++ b/ui/src/permission/modules/system/user.ts @@ -4,6 +4,9 @@ import { canSys } from '../../policy' import { PermissionConstants as P } from '../../core' export default { + /** + * 系统「用户管理」只读权限 + * */ read: () => canSys(P.USER_READ), create: () => canSys(P.USER_CREATE), edit: () => canSys(P.USER_EDIT), diff --git a/ui/src/permission/modules/system/userGroup.ts b/ui/src/permission/modules/system/userGroup.ts index c8273c82e2c..ea125023db4 100644 --- a/ui/src/permission/modules/system/userGroup.ts +++ b/ui/src/permission/modules/system/userGroup.ts @@ -1,13 +1,15 @@ /** 系统「用户组」按钮权限。$perm.userGroup.* */ -import { canSys } from '../../policy' -import { PermissionConstants as P } from '../../core' +import { PermissionConstants as P, hasPermission, RoleConstants, Compare} from '../../core' export default { - read: () => canSys(P.SYSTEM_USER_GROUP_READ), - create: () => canSys(P.SYSTEM_USER_GROUP_CREATE), - edit: () => canSys(P.SYSTEM_USER_GROUP_EDIT), - delete: () => canSys(P.SYSTEM_USER_GROUP_DELETE), - addMember: () => canSys(P.SYSTEM_USER_GROUP_ADD_MEMBER), - removeMember: () => canSys(P.SYSTEM_USER_GROUP_REMOVE_MEMBER), + /** + * 系统「用户组」只读权限 + * */ + read: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.SYSTEM_USER_GROUP_READ],Compare.OR), + create: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.SYSTEM_USER_GROUP_CREATE],Compare.OR), + edit: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.SYSTEM_USER_GROUP_EDIT],Compare.OR), + delete: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.SYSTEM_USER_GROUP_DELETE],Compare.OR), + addMember: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.SYSTEM_USER_GROUP_ADD_MEMBER],Compare.OR), + removeMember: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.SYSTEM_USER_GROUP_REMOVE_MEMBER],Compare.OR), } diff --git a/ui/src/permission/modules/system/workspace.ts b/ui/src/permission/modules/system/workspace.ts index 54769759b7d..944fb5c80ed 100644 --- a/ui/src/permission/modules/system/workspace.ts +++ b/ui/src/permission/modules/system/workspace.ts @@ -1,13 +1,17 @@ /** 系统「工作空间」实体管理按钮权限。$perm.workspace.* */ import { canSys } from '../../policy' -import { PermissionConstants as P } from '../../core' +import { PermissionConstants as P, hasPermission, RoleConstants, Compare,hasEdition} from '../../core' +import { Edition } from '@/permission/core/common' export default { - read: () => canSys(P.WORKSPACE_READ), + /** + * 系统「工作空间」只读权限 + * */ + read: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.WORKSPACE_READ],Compare.OR) && hasEdition(Edition.PE), create: () => canSys(P.WORKSPACE_CREATE), edit: () => canSys(P.WORKSPACE_EDIT), delete: () => canSys(P.WORKSPACE_DELETE), - addMember: () => canSys(P.WORKSPACE_ADD_MEMBER), - removeMember: () => canSys(P.WORKSPACE_REMOVE_MEMBER), + addMember: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.WORKSPACE_ADD_MEMBER],Compare.OR), + removeMember: () => hasPermission([RoleConstants.ADMIN,RoleConstants.WORKSPACE_MANAGE,P.WORKSPACE_REMOVE_MEMBER],Compare.OR), } diff --git a/ui/src/permission/modules/tool/index.ts b/ui/src/permission/modules/tool/index.ts index b410ca252e7..aa778ea123a 100644 --- a/ui/src/permission/modules/tool/index.ts +++ b/ui/src/permission/modules/tool/index.ts @@ -4,4 +4,11 @@ import workspace from './workspace' import system from './system' import share from './share' -export default { workspace, system, share } +export default { workspace, + /** + * 系统「工具」权限 + * */ + system, + /**系统「共享工具」权限 + * */ + share } diff --git a/ui/src/permission/modules/tool/share.ts b/ui/src/permission/modules/tool/share.ts index acd7c77c7bf..366405bd44b 100644 --- a/ui/src/permission/modules/tool/share.ts +++ b/ui/src/permission/modules/tool/share.ts @@ -1,7 +1,8 @@ /** 系统「共享工具」按钮权限(系统 > 共享 > 工具)。全局判定,无 id。 */ import { canSys } from '../../policy' -import { PermissionConstants as P } from '../../core' +import { PermissionConstants as P,hasEdition} from '../../core' +import { Edition } from '@/permission/core/common' const share = { // —— 共享页不提供 —— @@ -21,7 +22,10 @@ const share = { folderAuth: () => false, folderManage: () => false, - read: () => canSys(P.SHARED_TOOL_READ), + /** + * 系统「共享工具」(系统 > 共享 > 工具)只读权限 + */ + read: () => canSys(P.SHARED_TOOL_READ) && hasEdition(Edition.PE), // —— 工具资源 —— create: () => canSys(P.SHARED_TOOL_CREATE), diff --git a/ui/src/permission/modules/tool/system.ts b/ui/src/permission/modules/tool/system.ts index c742028aea2..7172579f2b1 100644 --- a/ui/src/permission/modules/tool/system.ts +++ b/ui/src/permission/modules/tool/system.ts @@ -1,7 +1,8 @@ /** 系统「工具资源管理」按钮权限(系统 > 资源管理 > 工具)。全局判定,无 id。 */ import { canSys } from '../../policy' -import { PermissionConstants as P } from '../../core' +import { PermissionConstants as P,hasEdition} from '../../core' +import { Edition } from '@/permission/core/common' const system = { // —— 系统页不提供 —— @@ -19,7 +20,10 @@ const system = { folderAuth: () => false, folderManage: () => false, - read: () => canSys(P.RESOURCE_TOOL_READ), + /** + * 系统「工具资源管理」(系统 > 资源管理 > 工具)只读权限 + * */ + read: () => canSys(P.RESOURCE_TOOL_READ) && hasEdition(Edition.PE), isShare: () => canSys(P.SHARED_TOOL_READ), // —— 工具资源 —— diff --git a/ui/src/router/admin/system/index.ts b/ui/src/router/admin/system/index.ts index d41fcd77850..514158a7279 100644 --- a/ui/src/router/admin/system/index.ts +++ b/ui/src/router/admin/system/index.ts @@ -22,46 +22,110 @@ export const systemRoutes: RouteRecordRaw = { path: 'identity', name: 'system-identity', redirect: { name: 'system-users' }, - meta: { title: '身份与权限', icon: 'icon_account_outlined', order: 10 }, + meta: { title: '身份与权限', icon: 'icon_account_outlined', order: 10, + permission:() => + { + return ( + perm.system.user.read() || + perm.system.workspace.read() || + perm.system.role.read() || + perm.system.userGroup.read() || + ( + perm.system.authorization.application.read() || + perm.system.authorization.knowledge.read() || + perm.system.authorization.tool.read() || + perm.system.authorization.model.read() + ) + ); + }, + next:'system-resource' + }, children: [ - { path: 'users', name: 'system-users', component: () => import('@/views/system/identity/users/UserListView.vue'), meta: { title: '用户管理', order: 10 } }, + { path: 'users', name: 'system-users', component: () => import('@/views/system/identity/users/UserListView.vue'), + meta: { title: '用户管理', order: 10, + permission:perm.system.user.read, + next:'system-workspace' + }, + }, { path: 'workspace', name: 'system-workspace', component: () => import('@/views/system/identity/workspaces/WorkspaceListView.vue'), - meta: { title: '工作空间', order: 20 }, + meta: { title: '工作空间', order: 20, + permission:perm.system.workspace.read, + next:'system-roles' + }, + }, + { + path: 'roles', + name: 'system-roles', + component: () => import('@/views/system/identity/roles/RoleListView.vue'), + meta: { title: '角色管理', order: 30, + permission:perm.system.role.read, + next:'system-groups' + }, + }, + { + path: 'groups', + name: 'system-groups', + component: () => import('@/views/system/identity/groups/GroupsListView.vue'), + meta: { title: '用户组', order: 40, + permission:perm.system.userGroup.read, + next:'system-authorization' + }, }, - { path: 'roles', name: 'system-roles', component: () => import('@/views/system/identity/roles/RoleListView.vue'), meta: { title: '角色管理', order: 30 } }, - { path: 'groups', name: 'system-groups', component: () => import('@/views/system/identity/groups/GroupsListView.vue'), meta: { title: '用户组', order: 40 } }, { path: 'authorization', name: 'system-authorization', redirect: { name: 'system-authorization-applications' }, - meta: { title: '资源授权', order: 50 }, + meta: { title: '资源授权', order: 50, + permission:() => + { + return ( + perm.system.authorization.application.read() || + perm.system.authorization.knowledge.read() || + perm.system.authorization.tool.read() || + perm.system.authorization.model.read() + ); + }, + next:'system-resource' + }, children: [ { path: 'applications', name: 'system-authorization-applications', component: () => import('@/views/system/identity/resource-authorization/ResourceAuthorizationView.vue'), - meta: { title: '智能体', order: 10, resource: RESOURCE_TYPE.APPLICATION }, + meta: { title: '智能体', order: 10, resource: RESOURCE_TYPE.APPLICATION, + permission:perm.system.authorization.application.read, + next:'system-authorization-knowledge' + }, }, { path: 'knowledge', name: 'system-authorization-knowledge', component: () => import('@/views/system/identity/resource-authorization/ResourceAuthorizationView.vue'), - meta: { title: '知识库', order: 20, resource: RESOURCE_TYPE.KNOWLEDGE }, + meta: { title: '知识库', order: 20, resource: RESOURCE_TYPE.KNOWLEDGE, + permission:perm.system.authorization.knowledge.read, + next:'system-authorization-tools' + }, }, { path: 'tools', name: 'system-authorization-tools', component: () => import('@/views/system/identity/resource-authorization/ResourceAuthorizationView.vue'), - meta: { title: '工具', order: 30, resource: RESOURCE_TYPE.TOOL }, + meta: { title: '工具', order: 30, resource: RESOURCE_TYPE.TOOL, + permission:perm.system.authorization.tool.read, + next:'system-authorization-models' + }, }, { path: 'models', name: 'system-authorization-models', component: () => import('@/views/system/identity/resource-authorization/ResourceAuthorizationView.vue'), - meta: { title: '模型', order: 40, resource: RESOURCE_TYPE.MODEL }, + meta: { title: '模型', order: 40, resource: RESOURCE_TYPE.MODEL, + permission:perm.system.authorization.model.read, + next:'system-resource' + }, }, ], }, @@ -71,12 +135,51 @@ export const systemRoutes: RouteRecordRaw = { path: 'resource', name: 'system-resource', redirect: { name: 'system-resource-applications' }, - meta: { title: '资源管理', icon: 'icon_setting', order: 20, resourceScope: 'system-resource' }, + meta: { title: '资源管理', icon: 'icon_setting', order: 20, resourceScope: 'system-resource', + permission:() => + { + return ( + perm.application.system.jumpRead() || + perm.knowledge.system.jumpRead() || + perm.tool.system.read() || + perm.model.system.read() + ); + }, + next:'system-share' + }, children: [ - { path: 'applications', name: 'system-resource-applications', component: () => import('@/views/system/SystemView.vue'), meta: { title: '智能体', order: 10 } }, - { path: 'knowledge', name: 'system-resource-knowledge', component: () => import('@/views/system/SystemView.vue'), meta: { title: '知识库', order: 20 } }, - { path: 'tools', name: 'system-resource-tools', component: () => import('@/views/system/SystemView.vue'), meta: { title: '工具', order: 30 } }, - { path: 'models', name: 'system-resource-models', component: () => import('@/views/system/SystemView.vue'), meta: { title: '模型', order: 40 } }, + { path: 'applications', + name: 'system-resource-applications', + component: () => import('@/views/system/SystemView.vue'), + meta: { title: '智能体', order: 10, + permission:perm.application.system.jumpRead, + next:'system-resource-knowledge' + }, + }, + { path: 'knowledge', + name: 'system-resource-knowledge', + component: () => import('@/views/system/SystemView.vue'), + meta: { title: '知识库', order: 20, + permission:perm.knowledge.system.jumpRead, + next:'system-resource-tools' + }, + }, + { path: 'tools', + name: 'system-resource-tools', + component: () => import('@/views/system/SystemView.vue'), + meta: { title: '工具', order: 30, + permission:perm.tool.system.read, + next:'system-resource-models' + }, + }, + { path: 'models', + name: 'system-resource-models', + component: () => import('@/views/system/SystemView.vue'), + meta: { title: '模型', order: 40, + permission:perm.model.system.read, + next:'system-share' + }, + }, ], }, ...systemApplicationRoutes, @@ -85,51 +188,147 @@ export const systemRoutes: RouteRecordRaw = { path: 'share', name: 'system-share', redirect: { name: 'system-shared-knowledge' }, - meta: { title: '共享资源', icon: 'icon_setting', order: 30, resourceScope: 'system-shared' }, + meta: { title: '共享资源', icon: 'icon_setting', order: 30, resourceScope: 'system-shared', + permission:() => + { + return ( + perm.knowledge.share.jumpRead() || + perm.model.share.read() || + perm.tool.share.read() + ); + }, + next:'system-chat' + }, children: [ - { path: 'knowledge', name: 'system-shared-knowledge', component: () => import('@/views/system/SystemView.vue'), meta: { title: '知识库', order: 10 } }, - { path: 'models', name: 'system-shared-models', component: () => import('@/views/system/shared-resources/SharedModelview.vue'), meta: { title: '模型', order: 20 } }, - { path: 'tools', name: 'system-shared-tools', component: () => import('@/views/system/SystemView.vue'), meta: { title: '工具', order: 30 } }, + { path: 'knowledge', + name: 'system-shared-knowledge', + component: () => import('@/views/system/SystemView.vue'), + meta: { title: '知识库', order: 10, + permission:perm.knowledge.share.jumpRead, + next:'system-shared-models' + }, + }, + { path: 'models', + name: 'system-shared-models', + component: () => import('@/views/system/shared-resources/SharedModelview.vue'), + meta: { title: '模型', order: 20, + permission:perm.model.share.read, + next:'system-shared-tools' + }, + }, + { path: 'tools', + name: 'system-shared-tools', + component: () => import('@/views/system/SystemView.vue'), + meta: { title: '工具', order: 30, + permission:perm.tool.share.read, + next:'system-chat' + }, + }, ], }, { path: 'chat', name: 'system-chat', redirect: { name: 'system-chat-users' }, - meta: { title: '对话端管理', icon: 'icon_contacts_outlined', order: 40 }, + meta: { title: '对话端管理', icon: 'icon_contacts_outlined', order: 40, + permission:() => + { + return ( + perm.system.chatUser.read() || + perm.system.chatUserGroup.read() || + perm.system.chatAuth.edit() || + perm.system.portal.read() + ); + }, + next:'system-settings' + }, children: [ - { path: 'users', name: 'system-chat-users', component: () => import('@/views/system/chat/users/UserListView.vue'), meta: { title: '对话用户', order: 10 } }, - { path: 'groups', name: 'system-chat-groups', component: () => import('@/views/system/chat/user-groups/GroupsListView.vue'), meta: { title: '对话用户组', order: 20 } }, + { path: 'users', + name: 'system-chat-users', + component: () => import('@/views/system/chat/users/UserListView.vue'), + meta: { title: '对话用户', order: 10, + permission:perm.system.chatUser.read, + next:'system-chat-groups' + }, + }, + { path: 'groups', + name: 'system-chat-groups', + component: () => import('@/views/system/chat/user-groups/GroupsListView.vue'), + meta: { title: '对话用户组', order: 20, + permission:perm.system.chatUserGroup.read, + next:'system-chat-authentication' + }, + }, { path: 'authentication', name: 'system-chat-authentication', component: () => import('@/views/system/chat/authentication/AuthenticationView.vue'), - meta: { title: '对话用户认证', order: 30 }, + meta: { title: '对话用户认证', order: 30, + permission:perm.system.chatAuth.edit, + next:'system-portal-access' + }, + }, + { path: 'portal-access', + name: 'system-portal-access', + component: () => import('@/views/system/SystemView.vue'), + meta: { title: '门户访问设置', order: 40, + permission:perm.system.portal.read, + next:'system-settings' + }, }, - { path: 'portal-access', name: 'system-portal-access', component: () => import('@/views/system/SystemView.vue'), meta: { title: '门户访问设置', order: 40 } }, ], }, { path: 'settings', name: 'system-settings', redirect: { name: 'system-login-authentication' }, - meta: { title: '系统设置', icon: 'icon_setting', order: 50 }, + meta: { title: '系统设置', icon: 'icon_setting', order: 50, + permission:() => + { + return ( + perm.system.loginAuth.read() || + perm.system.appearance.read() || + perm.system.email.read() + ); + }, + next:'system-logs' + }, children: [ { path: 'authentication', name: 'system-login-authentication', component: () => import('@/views/system/settings/authentication/AuthenticationView.vue'), - meta: { title: '系统用户认证', order: 10 }, + meta: { title: '系统用户认证', order: 10, + permission:perm.system.loginAuth.read, + next:'system-theme' + }, + }, + { path: 'theme', + name: 'system-theme', + component: () => import('@/views/system/settings/theme/ThemeSettingView.vue'), + meta: { title: '外观设置', order: 20, + permission:perm.system.appearance.read, + next:'system-email' + }, + }, + { path: 'email', + name: 'system-email', + component: () => import('@/views/system/settings/email/EmailSettingsView.vue'), + meta: { title: '邮箱设置', order: 30, + permission:perm.system.email.read, + next:'system-logs' + }, }, - { path: 'theme', name: 'system-theme', component: () => import('@/views/system/settings/theme/ThemeSettingView.vue'), meta: { title: '外观设置', order: 20 } }, - { path: 'email', name: 'system-email', component: () => import('@/views/system/settings/email/EmailSettingsView.vue'), meta: { title: '邮箱设置', order: 30 } }, ], }, { path: 'logs', name: 'system-logs', component: () => import('@/views/system/operate-logs/OperateLogListView.vue'), - meta: { title: '操作日志', icon: 'icon_logs_outlined', activeIcon: 'icon_logs_filled', order: 60 }, + meta: { title: '操作日志', icon: 'icon_logs_outlined', activeIcon: 'icon_logs_filled', order: 60, + permission:perm.system.operationLog.read, + next:'system-home' + }, }, ], }