邀请组织 (Organization) 成员
在多租户应用中,一个常见需求是邀请成员加入组织 (Organization)。本指南将介绍实现此功能的步骤和技术细节。
流程概览
整体流程如下图所示:
创建组织 (Organization) 角色
在邀请成员之前,需要创建组织 (Organization) 角色。参见 组织模板 了解更多关于角色和权限的信息。
在本指南中,我们依然创建两个典型的组织 (Organization) 角色:admin 和 member。
admin 角色拥有对组织 (Organization) 内所有资源的完全访问权限,而 member 角色的访问权限有限。例如:
admin角色:read:data- 读取所有组织 (Organization) 数据资源的权限。write:data- 写入所有组织 (Organization) 数据资源的权限。delete:data- 删除所有组织 (Organization) 数据资源的权限。invite:member- 邀请成员加入组织 (Organization)。manage:member- 管理组织 (Organization) 内的成员。delete:member- 移除组织 (Organization) 内的成员。
member角色:read:data- 读取所有组织 (Organization) 数据资源的权限。write:data- 写入所有组织 (Organization) 数据资源的权限。invite:member- 邀请成员加入组织 (Organization)。
你可以在 Logto 控制台 中轻松完成这些操作。你也可以使用 Logto Management API 以编程方式创建组织 (Organization) 角色。
配置你的邮件连接器 (Connector)
由于邀请是通过邮件发送的,请确保你的 邮件连接器 (Connector) 已正确配置。要发送邀请,请配置一个用法类型为 OrganizationInvitation 的 邮件模板。你可以在内容中包含组织 (Organization)(如名称、Logo)和邀请人(如邮箱、姓名)的 变量,并根据需要自定义 本地化模板。
以下是 OrganizationInvitation 用法类型的邮件模板示例:
{
"subject": "你被邀请加入 {{organization.name}}",
"content": "<p>你好,</p><p>{{inviter.name}} ({{inviter.primaryEmail}}) 邀请你加入 <strong>{{organization.name}}</strong>。</p><p>点击这个 <a href=\"{{link}}\" target=\"_blank\">链接</a> 接受邀请并开始体验。</p><p>如果你并未预期收到此邀请,可以放心忽略此邮件。</p>",
"usageType": "OrganizationInvitation",
"type": "text/html"
}
邮件内容中的 {{link}} 占位符会在发送邮件时被实际的邀请链接替换。
使用 Logto Management API 处理邀请
备注:
如果你还没有配置 Logto Management API,请参见 与 Management API 交互 获取详细信息。
使用 Logto Management API 创建组织 (Organization) 邀请
在组织 (Organization) 功能中有一组与邀请相关的 Management API。通过这些 API,你可以:
POST /api/organization-invitations:创建带有指定组织 (Organization) 角色的邀请。POST /api/one-time-tokens:为被邀请者创建一次性令牌,用于其接受邀请时认证 (Authentication)。了解更多POST /api/organization-invitations/{id}/message:通过邮件将组织 (Organization) 邀请发送给被邀请者。
备注:
请求体支持 link 属性,因此你可以基于邀请 ID 自定义自己的邀请链接。例如:
{
"link": "https://your-app.com/invitation/join?id=your-invitation-id&token=your-one-time-token&email=invitee-email"
}