ToolJet 自助注册(Self Sign-Up)配置指南:实例级与工作区级启用详解
ToolJet 自助注册Self Sign-Up配置指南实例级与工作区级启用详解【免费下载链接】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/ToolJetToolJet 的 Sign-Up自助注册功能允许管理员通过公开的注册 URL 让用户直接注册加入无需逐一发送邀请。本文基于 ToolJet 3.0.0-LTS 版本文档结合后端源码onboarding/service.ts、login-configs/service.ts详解 Self-Hosted 版本中如何在**实例级Instance Level与工作区级Workspace Level**启用注册、配置允许域名、理解注册后的角色分配与底层校验逻辑帮助 Super Admin 与 Workspace Admin 快速落地用户自主加入的接入方案。一、自助注册机制概览在 ToolJet 中自助注册self sign-up让用户通过注册 URL 自行创建账号替代传统的管理员邀请 激活链接流程。对于Self-Hosted 版本启用注册可在两个层级进行配置层级操作角色用户注册后分配的角色注册入口实例级Instance LevelSuper Admin新建个人工作区Personal Workspace并赋予该用户Workspace Admin角色https://app.corp.com/signup工作区级Workspace LevelAdmin加入对应工作区并赋予该用户End User角色https://app.corp.com/login/nexus登录页含注册入口两个层级默认情况下Enable Signup开关均为关闭状态需要管理员显式开启。此外两个层级都支持通过Allowed Domains允许域名限制可注册的邮箱域名若不填写任何域名则任何持有注册 URL 的人都能注册。从数据模型看注册开关对应 organization.entity.ts 中的enable_sign_up字段enableSignUp而允许域名则对应password_allowed_domains/password_restricted_domains字段。实例级设置则存储在 Instance Settings 中见 instance-settings/constants/index.ts 中的ENABLE_SIGNUP、ALLOWED_DOMAINS、ALLOW_PERSONAL_WORKSPACE等枚举键。二、实例级启用注册Instance Level所需角色Super AdminSuper Admin 可在实例级启用注册。当用户通过实例级自助注册加入实例时系统会自动为该用户创建一个新的个人工作区Personal Workspace并为其分配Workspace Admin 角色。操作步骤点击仪表盘左下角的设置图标⚙️。进入Settings Manage instance settings。 示例 URLhttps://app.corp.com/instance-settings/manage-instance-settings确认已允许个人工作区Allow personal workspace。此开关位于实例设置中对应后端INSTANCE_USER_SETTINGS.ALLOW_PERSONAL_WORKSPACE见 instance-settings/constants/index.ts。只有允许个人工作区用户实例级自助注册后系统才能为其创建独立的个人工作区。进入Instance login标签页。 示例 URLhttps://app.corp.com/instance-settings/instance-login填写Allowed domains允许域名。可输入多个域名以逗号分隔。例如corp.com, example.com, tooljet.com。如果不填写允许域名则任何拥有注册 URL 的人都可以注册到该实例。打开Enable signup开关。默认情况下该开关是关闭的。点击页面底部的Save changes按钮保存配置。保存后用户即可在 ToolJet 部署 URL 上直接注册 示例 URLhttps://app.corp.com/signup注册页面包含姓名Name、邮箱Email、密码Password三个必填项同时提供 Google 等已启用 SSO 的一键注册入口。实例级注册的源码级原理从后端实现看实例级注册开关的默认值直接受环境变量控制。在 instance-settings/constants/index.ts 的getDefaultInstanceSettings()中[INSTANCE_SYSTEM_SETTINGS.ENABLE_SIGNUP]: process.env.DISABLE_SIGNUPS false ? true : false,即只有显式设置DISABLE_SIGNUPSfalse时实例级注册默认才为开启状态否则默认关闭。同理在 login-configs/service.ts 的getInstanceSSOConfigs()中form: { enable_sign_up: this.configService.getstring(DISABLE_SIGNUPS) ! true, enabled: true, }, enableSignUp: this.configService.getstring(DISABLE_SIGNUPS) ! true,可以看到实例级注册开关最终读取的是DISABLE_SIGNUPS环境变量。用户提交注册请求后后端入口OnboardingService.signup()见 onboarding/service.ts会依次执行如下校验首先检查DISABLE_SIGNUPS是否为true是则直接抛出NotAcceptableException拒绝注册当请求未携带organizationId即实例级注册时调用validatePasswordDomain(email, undefined, undefined, ...)对邮箱域名进行校验不匹配则抛出ForbiddenExceptionThis login method is not available for your domain...校验通过后若用户不存在则在默认工作区或新工作区中创建用户createUserInDefaultWorkspace/createUserInWorkspace。三、工作区级启用注册Workspace Level所需角色AdminWorkspace Admin 可在工作区级启用注册。当用户通过工作区级自助注册加入时该用户会被加入对应工作区并分配End User 角色即普通成员不具备管理权限。操作步骤进入Workspace settings Workspace login。 示例 URLhttps://app.corp.com/nexus/workspace-settings/workspace-login填写Allowed domains允许域名。同样支持多个域名以逗号分隔例如tooljet.com, tooljet.ai, corp.com。如果不填写允许域名则任何拥有登录 URL 的人都可以注册到该工作区。打开Enable signup开关。默认情况下该开关是关闭的。点击Save changes按钮保存配置。复制Login URL并分享给用户。工作区登录 URL 的格式为https://app.corp.com/login/nexus其中nexus是该工作区的 slug。保存后用户打开该登录 URL 即可看到登录页面页面上会显示Sign-Up 选项用户可从登录页导航到注册页并自助注册。工作区级注册的源码级原理工作区级注册开关对应 organization.entity.ts 中的enable_sign_up字段。管理员通过LoginConfigsService.updateGeneralOrganizationConfigs()见 login-configs/service.ts更新配置该方法接收并落库的字段包括const { domain, passwordAllowedDomains, passwordRestrictedDomains, enableSignUp, inheritSSO, automaticSsoLogin } params; const updatableParams { domain, passwordAllowedDomains, passwordRestrictedDomains, enableSignUp, inheritSSO, automaticSsoLogin, };其中enableSignUp即注册开关passwordAllowedDomains/passwordRestrictedDomains为允许/限制的邮箱域名。入参校验定义在 dto/login-configs.dto.ts 的LoginConfigsUpdateDto中domain为可选字符串且最长 250 字符enableSignUp、automaticSsoLogin、inheritSSO均为可选布尔值。当用户通过工作区注册链接提交注册时OnboardingService.signup()会走带organizationId的分支见 onboarding/service.tsif (organizationId) { signingUpOrganization await this.organizationRepository.get(organizationId); ... const { enableSignUp, passwordAllowedDomains, passwordRestrictedDomains } signingUpOrganization; if (!enableSignUp) { throw new ForbiddenException(Workspace signup has been disabled. Please contact the workspace admin.); } if (!(await validatePasswordDomain(email, passwordAllowedDomains, passwordRestrictedDomains, ...))) { throw new ForbiddenException(This login method is not available for your domain...); } }也就是说工作区级注册会先校验工作区自身的enableSignUp开关再校验邮箱域名是否命中passwordAllowedDomains白名单、是否被passwordRestrictedDomains黑名单拦截。对于 ToolJet CE社区版当用户通过实例级 URL 注册且存在默认工作区时还会额外校验默认工作区的enableSignUp是否开启见signup()中isCE !defaultWorkspace.enableSignUp分支未开启同样抛出ForbiddenException。四、实例级与工作区级如何协同两种层级的注册开关并非互斥而是作用于注册请求的不同阶段带工作区上下文organizationId的注册优先校验目标工作区的enableSignUp与域名配置注册成功后用户加入该工作区并获得End User角色不带工作区上下文的注册实例级 URL/signup校验实例级DISABLE_SIGNUPS/ENABLE_SIGNUP设置与实例级允许域名注册成功后系统为该用户创建个人工作区并授予Workspace Admin角色。因此典型的使用场景是实例级开启注册 允许个人工作区让员工访问公司 ToolJet 域名即可自助开通个人工作区同时各工作区 Admin 按需开启工作区级注册配合工作区专属的 Login URL/login/workspace-slug定向吸纳成员。两者都可通过 Allowed Domains 将注册范围限定在企业邮箱域名内从源头拦截外部账号。五、常见问题与排障基于 onboarding/service.ts 与 login-configs/service.ts 中的校验逻辑以下是自助注册过程中可能遇到的典型报错与处理建议现象 / 报错原因处理建议实例级注册被拒NotAcceptableException环境变量DISABLE_SIGNUPStrue在部署环境中设置DISABLE_SIGNUPSfalse或在实例设置中开启Enable signupWorkspace signup has been disabled. Please contact the workspace admin.目标工作区的enableSignUp开关未开启由 Workspace Admin 在Workspace settings Workspace login中开启Enable signupThis login method is not available for your domain. Please contact admin or try another method.注册邮箱域名不在允许列表中或被限制域名拦截检查 Allowed domains 配置实例级或工作区级将用户邮箱域名加入白名单或移除黑名单中的域名实例级注册提示默认工作区禁止注册CE 版默认工作区Default Workspace的enableSignUp未开启由 Super Admin 在默认工作区的工作区设置中开启注册开关注册后未进入预期工作区使用了实例级注册 URL系统创建了个人工作区若目标是加入指定工作区应使用该工作区的 Login URL/login/slug完成注册此外需注意实例级注册依赖Allow personal workspace开关INSTANCE_USER_SETTINGS.ALLOW_PERSONAL_WORKSPACE若该开关被关闭实例级自助注册将无法正常创建个人工作区请在第 3 步中务必确认其为开启状态。六、相关资源用户管理文档目录docs/versioned_docs/version-3.0.0-LTS/user-management注册流程核心实现server/src/modules/onboarding/service.ts登录配置更新与实例配置读取server/src/modules/login-configs/service.ts工作区注册开关与域名字段模型server/src/entities/organization.entity.ts实例级设置枚举与默认值含DISABLE_SIGNUPSserver/src/modules/instance-settings/constants/index.ts登录配置更新 DTO字段校验规则server/src/dto/login-configs.dto.ts【免费下载链接】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),仅供参考