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