ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

ToolJet 自定义用户组(Custom Groups)完整指南:创建、删除、复制与权限继承机制

ToolJet 自定义用户组(Custom Groups)完整指南:创建、删除、复制与权限继承机制 ToolJet 自定义用户组Custom Groups完整指南创建、删除、复制与权限继承机制【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet自定义用户组Custom Groups是 ToolJet 工作区内实现精细化权限管理RBAC的核心手段。本文基于 ToolJet 官方文档与仓库源码系统讲解自定义组的创建、删除、复制操作以及组 角色权限继承与自动升降级的底层规则帮助你按团队、按业务线为成员精确划分可访问的应用与数据源。在 ToolJet 中权限控制由用户角色与用户组共同承担Admin、Builder、End-user 等默认角色定义了基础能力而自定义组则允许管理员针对具体资源如某个 HR 应用、某个销售数据源单独授权。文档原文以 HR 与 Sales 两个团队为例当两个团队各自只需要访问与本团队相关的应用时管理员只需创建名为 HR、Sales 的自定义组再通过**精细访问控制Granular Access Control**为每组勾选对应应用即可参见 Access Control 指南。前置条件角色要求与功能可用性执行组管理操作前需要明确两个约束角色要求创建、删除、复制自定义组均要求当前用户具备Admin管理员角色。在 用户角色 体系中只有 Admin 拥有对工作区结构与成员的管理权限。功能可用性自定义组属于受许可证License控制的功能。从前端实现看创建按钮被LicenseTooltip包裹当许可证无效时按钮被禁用并提示 Custom groups are not available in your plan相关逻辑位于 ManageGroupPermissionsPage.jsxisFeatureEnabled、featureAccess分别控制可用性与提示文案。另外需要注意的是系统内置的Admin、Builder、End-user是默认组default groups它们不能被删除——前端代码通过isDefaultGroup判断组名匹配end-user/admin/builder时禁用删除按钮并显示 Cannot delete default group 提示见 ManageGroupPermissionsPage.jsx。自定义组则在界面中以独立的CUSTOM GROUPS分区展示与上方USER ROLE分区的默认角色组区分开。创建自定义用户组操作角色Admin创建流程如下点击仪表盘左下角的设置图标⚙️。进入Workspace SettingsGroupsGroups 即用户组管理页。示例 URLhttps://app.corp.com/nexus/workspace-settings/groups点击 Create new group。输入组名点击Create Group完成创建。创建成功后新组会出现在 CUSTOM GROUPS 列表中随后即可参照 Access Control 指南为其配置权限。组名校验规则源码级细节前端在 ManageGroupPermissionsPage.jsx 中对组名做了如下约束这些规则在实际操作中值得留意最长 50 个字符超出部分会被截断value.slice(0, 50)只允许字母、数字、下划线_、连字符-和空格正则表达式为/^[a-zA-Z0-9_ -]$/不符合时提示 Group name can only contain letters, numbers, underscores, hyphens and spaces组名必须唯一与已有组重名时保存按钮会被禁用Group name must be unique and max 50 characters。删除自定义用户组操作角色Admin点击仪表盘左下角的设置图标⚙️。进入Workspace SettingsGroups。点击目标组右侧的 kebab 菜单⋮。选择Delete在弹出的确认对话框中确认操作。删除前会弹出ConfirmDialog二次确认确认文案为 This group will be permanently deleted. Do you want to continue?见 ManageGroupPermissionsPage.jsx点击确认后调用后端接口完成删除。重要限制如上文所述默认组Admin / Builder / End-user无法删除删除操作仅适用于自定义组。删除自定义组是不可逆的删除后该组内所有成员将失去经由该组获得的所有权限。复制用户组Duplicate Group复制功能用于快速复用已有的权限结构是批量搭建团队权限时的效率工具。操作角色Admin点击仪表盘左下角的设置图标⚙️。进入Workspace SettingsGroups。点击目标组右侧的 kebab 菜单⋮。选择Duplicate在弹出的对话框中勾选需要一并复制的组内容。点击Duplicate系统会基于原组创建一个新组并带上所选内容。可复制的组内容复刻对话框中的勾选项对应前端 BaseManageGroupPermissions.jsx选项说明Users将原组的所有成员同步加入新组Group admins一并复制组的 Admin 成员Permissions复制组级权限配置Apps复制针对应用的精细访问权限Granular Access按ResourceType.APP过滤后逐个深拷贝Datasources复制数据源相关权限Workflows复制工作流相关权限App folders复制应用文件夹相关权限Workflow folders复制工作流文件夹相关权限Modules复制模块Modules相关权限Module folders复制模块文件夹相关权限勾选项的可视范围与版本有关在社区版CE中仅开放部分选项如 ManageGroupPermissionsPage.jsx 中GROUP_DUPLICATE_OPTIONS { addPermission: true, addApps: true, addUsers: true }其余项由groupDuplicateOption按版本注入。所有勾选项均未勾选时Duplicate 按钮会被禁用allFalse判断。后端实现原理复制操作对应 server/src/modules/group-permissions/service.ts 中的duplicateGroup方法整个过程在数据库事务dbTransactionWrap内完成查询原组信息并深拷贝为新组记录若勾选addPermission复制组级权限若勾选addUsers将原组全部成员以{ userId, groupId }映射批量写入GroupUsers表若勾选addApps遍历原组所有type ResourceType.APP的精细权限先复制权限主体duplicateGranularPermissions再复制其下资源级授权duplicateResourcePermissions通过licenseUserService.validateUser校验许可证后返回新组。复制完成后新组名沿用原组名成功后前端会提示 Group duplicated successfully! 并自动选中新组方便立即进入配置。继承与覆盖规则Inheritance and Overrides这是自定义组体系中最重要的行为准则文档明确了以下 4 条规则权限叠加用户自动继承其所属角色Role以及其加入的所有自定义组Custom Groups的权限。自动升级当用户被加入一个权限高于其当前角色的自定义组时系统会自动将其用户角色升级到与之匹配的更高访问级别。自动降级移除当用户角色被降级到更低权限时系统会自动将其从那些提供了高于新角色权限的自定义组中移除。取最高权限当用户同时属于多个组时最终生效的是任意一个组所授予的最高级别权限而不是取交集或平均值。理解这四条规则可以推导出以下实践要点自定义组本质上是角色之上的叠加层它可以向下细分如把 End-user 再分为仅看 HR 应用与仅看 Sales 应用也可以向上提权如给某 Builder 临时开放数据源 Configure 权限。由于自动升级与自动移除机制的存在组内成员的层级是动态维护的——管理员在调整用户角色或组成员关系时无需手动逐一同步系统会在相应服务端逻辑中完成一致性的收敛。当同一用户既被授予较高角色的组、又被降级时规则 3 与规则 4 配合保证了角色降级必然连带移除高权限组避免出现角色已降级但组权限仍残留的权限泄漏窗口。与 Access Control 的衔接在自定义组上配置权限自定义组本身只是一层容器真正的权限内容在Groups 页面的两个 Tab中配置1. Permissions组级权限对整类资源做粗粒度授权主要包括资源权限说明AppsCreate / Delete允许组成员在工作区创建 / 删除应用Data sourcesCreate / Delete允许添加 / 移除数据源FolderCreate / Update / Delete允许创建、更新、删除用于组织资源的文件夹Workspace constants/variablesCreate / Update / Delete允许定义、修改、移除工作区级常量与变量2. Granular access精细访问控制对单个资源做细粒度授权支持所有资源或自定义选择两种范围AppsEdit可编辑/构建所选应用适合 Builder或View仅查看已发布版本适合 End-user并支持Hide from dashboard从仪表盘隐藏、仅 URL 可访问Data SourcesConfigure可查看并编辑数据源配置适合管理员或Build with可在应用/工作流中使用该数据源创建查询适合开发者切换Granular accessTab 后点击 Add permission选择资源类型App / Data source、命名并配置权限后点击Add即可完成授权。完整配置步骤与权限含义说明见 Access Control该文档同时指出精细访问控制必须通过自定义组来配置这正是自定义组在 RBAC 体系中不可替代的原因。从资源模型看前端 constants.js 将可授权的资源类型枚举为app应用、data_source数据源、workflow工作流、folder应用文件夹、module模块、workflow_folder、module_folder七类对应后端granular_permissions与各类group_*关联表权限配置的覆盖面随着版本迭代持续扩展。源码级验证一组操作对应的完整调用链为便于开发者深入源码验证这里汇总本文涉及操作的核心实现位置操作前端入口后端实现创建组ManageGroupPermissionsPage.jsxcreateGroup含名称校验与create_group埋点service.tscreate落库并写入GROUP_PERMISSION_CREATE审计日志重命名组同页updateGroupName/executeGroupUpdationL347-L421service.tsupdateGroup事务内更新删除组同页 kebab 菜单 ConfirmDialogL340-L379service.tsdeleteGroup复制组同页duplicateGroup 复刻对话框L65-L103service.tsduplicateGroup事务内复制组、用户与精细权限添加/移除成员BaseManageGroupPermissionResources与VirtualizedUserList组件components 目录service.tsaddGroupUsers/deleteGroupUser值得注意的工程细节创建、删除、复制等操作都通过RequestContext.setLocals写入审计日志Audit Logs这意味着工作区管理员可以在审计记录中追溯每一次组变更的操作用户、资源与时间满足企业内部合规审计需求。总结自定义用户组是 ToolJet 权限体系中连接角色与具体资源的桥梁创建 / 删除 / 复制三个高频操作都集中在Workspace Settings Groups仅限 Admin 操作且复制功能可在秒级内复刻成员、权限与应用授权继承与覆盖规则保证了权限模型的一致性与安全性权限叠加取最高值、角色升级自动同步、角色降级自动清理高权限组无需手工干预结合Access Control的 Permissions 与 Granular access 两个维度管理员可以精确回答谁能建应用谁能看销售报表谁能配置数据库连接等问题。无论是按团队隔离应用HR / Sales 场景、按项目搭建临时协作组还是为外部协作者划定最小权限范围自定义组都是首选的管理手段。更多权限细节可继续阅读 Access Control 与 用户角色 两篇文档。【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表