域名入组与工作空间访问
平台管理员在两个独立页面管理组织访问:/admin/workspaces 创建工作空间并管理负责人;/admin/domains 将邮箱域映射到工作空间,并控制入组用户是否可以使用个人空间。本页单独介绍域规则,因为它会同时改变注册流程和工作空间路由。
配置前准备
- 在
/admin/workspaces创建目标工作空间。 - 按姓名或邮箱搜索一个已启用的现有账号作为工作空间管理员。该账号会在同一操作中成为所有者并加入成员。
- 确认该账号没有被其他域规则锁定。平台管理员可以拥有个人空间,也可以负责多个工作空间。
- 启用域规则前确认 SMTP 能正常投递。命中启用规则的密码注册即使全局关闭邮箱验证,也必须验证邮箱。
创建工作空间并指定负责人
进入 管理后台 → 工作空间 → 创建工作空间。填写名称,按姓名或邮箱搜索已启用用户并选择管理员。候选人必须是已存在且符合条件的账号。服务端在一个事务中创建工作空间、成员关系、所有者关系和初始管理员角色;任一步失败都会整体回滚。
打开工作空间详情并点击 更换管理员 可以更换负责人。候选人列表只包含当前成员。新负责人获得所有者和管理员角色,原负责人降为普通成员,其他管理员角色保留;未使用的管理员邀请会在同一事务中撤销,并写入工作空间审计事件。
这个平台管理员操作与负责人自己的 转移所有权 流程不同:后者会让原负责人继续保留管理员身份;平台后台更换负责人会将原负责人降为普通成员。
添加邮箱域规则
进入 管理后台 → 域名 → 添加域名,填写:
| 字段 | 含义 |
|---|---|
| 域名 | 例如 example.com 的裸域名;不能写邮箱地址、协议、路径、通配符或尾部句点 |
| 工作空间 | 目标工作空间;创建后不可修改 |
| 自动入组 | 开启后,新建且符合条件的账号会加入该工作空间 |
| 锁定个人空间 | 开启后,入组普通用户只能进入指定工作空间 |
匹配取邮箱最后一个 @ 后的文本,且不区分大小写。user@example.com 匹配 example.com,user@sub.example.com 不匹配。规则不会追溯加入已有用户。新密码账号和 OAuth 账号都遵循此规则,但 OAuth 账号必须提供已验证且可信的邮箱声明。
账号创建、域绑定和工作空间成员写入在同一个数据库事务内完成。成员或绑定失败时不会留下半创建账号。绑定以用户 id 为键,用户之后修改邮箱也不会解除绑定。
锁定个人空间
启用 锁定个人空间 后,绑定的普通用户:
- 只能进入指定工作空间,不能切换到个人或其他工作空间;
- 不能创建工作空间、接受其他空间邀请或退出指定空间;
- 不能访问个人对话、文件、项目、知识库或临时私密对话入口;
- 即使客户端伪造
workspace_id或直接打开个人 URL,服务端也会拒绝。
用户原有个人数据会保留。锁定状态按请求从数据库读取,修改规则或单用户例外无需重新登录;在线客户端会收到新的访问状态,旧权限下的生成与上传快照会被撤销。
平台管理员不受域锁定影响。因此管理员可以使用个人空间,在个人空间与工作空间之间切换,也可以继续管理域规则。这个例外依据平台 admin 角色,而不是工作空间成员身份。
单用户例外
打开规则的 域用户 列表,为已入组账号选择三种实际状态之一:
| 状态 | 实际行为 |
|---|---|
| 遵循域规则 | 继承当前 lock_personal 值 |
| 仅工作空间 | 强制锁定此用户的个人空间 |
| 允许个人空间 | 覆盖规则,恢复个人空间访问 |
只有平台管理员可以修改例外。域级开关变化时,显式例外仍保持;选择 遵循域规则 才会恢复继承。恢复个人空间不会移除用户在指定工作空间的成员关系。
暂停、更换或删除规则
- 暂停自动入组:关闭 自动入组。已有绑定和锁定继续生效。
- 更换域名或目标工作空间:删除旧规则再创建新规则。这些字段不可修改,以免静默迁移既有数据。
- 删除规则:先查看影响说明并确认。删除会解除该规则下所有绑定和个人空间锁定,但保留已有工作空间成员关系和数据。
- 删除工作空间:先删除所有引用它的域规则。数据库使用
ON DELETE RESTRICT,避免锁定用户被留在不存在的工作空间。
如果用户在临时允许个人空间期间退出了指定空间,管理员重新启用锁定时系统会恢复其成员关系,确保仍有可进入的空间。
数据与备份影响
关系库在 registration_domains 保存规则,在 domain_users 保存用户绑定。registration_domains.workspace_id 使用 ON DELETE RESTRICT;domain_users 对用户和规则使用 ON DELETE CASCADE。因此规则、绑定和锁定状态必须包含在逻辑与物理备份中。
恢复或迁移时:
- 先恢复包含两张域表的关系数据库,再开放注册。
- 在同一一致性点恢复工作空间成员、文件等数据。
- 启动应用,让幂等迁移校验结构并重新加载权限。
- 对命中域规则的新注册、允许个人空间的例外用户,以及尝试切换空间的锁定用户分别做验收,再对外开放实例。
参见数据库总览与运维了解 schema、外键及 SQLite/PostgreSQL 差异;完整恢复顺序见升级、备份与恢复。
故障速查
| 现象 | 检查项 |
|---|---|
| 命中域名的用户没有入组 | 注册时规则已暂停、邮箱未验证/不可信,或域名含子域/尾部句点 |
| 规则中没有已有用户 | 入组只面向未来注册;已有用户应通过常规成员流程加入 |
| 用户仍能看到个人数据 | 检查单用户实际状态和请求是否命中当前数据库;平台管理员角色不受锁定 |
| 删除工作空间被拒绝 | 仍有 registration_domains 行引用它;先删除这些规则 |
| 用户改邮箱后仍被锁定 | 这是预期行为:domain_users 以 user_id 为键;修改例外或删除规则 |