定义组织管理功能
在设计你的组织体验之前,先列出你的多租户应用的关键需求。本章将重点介绍在塑造该体验时需要考虑的一些基本要素。
定义组织内的访问控制
在这种场景下,在一个租户内,组织管理员可以更新用户角色,而普通成员则不能。(相比之下,创建组织是任何终端用户都可以在 SaaS 多租户应用中执行的系统级操作。)为了支持这种细粒度的访问控制,需要定义组织权限和角色,以便只有管理员才能在组织内更新角色。
备注:
查看 组织模板 以了解更多关于组织角色和权限的信息。
admin 角色拥有对组织内所有资源的完全访问权限,而 member 角色的访问权限有限。例如,每个角色可以拥有如下权限:
admin角色:read:data- 读取所有组织数据资源的权限。write:data- 写入所有组织数据资源的权限。delete:data- 删除所有组织数据资源的权限。invite:member- 邀请成员加入组织的权限。manage:member- 管理组织成员的权限。delete:member- 移除组织成员的权限。
member角色:read:data- 读取所有组织数据资源的权限。write:data- 写入所有组织数据资源的权限。invite:member- 邀请成员加入组织的权限。
你可以在 Logto 控制台 中轻松完成这些操作。设置访问控制是你的组织(多租户)架构中的关键部分。
允许用户自主管理他们的组织
你的应用可能还需要一些管理功能。要构建这些功能,可以使用 Logto Management API。下面列出了常见功能及相关 API 端点。在下一章中,我们将逐步演示如何实现这些功能。
允许管理员和成员邀请他人
管理员和成员都可以邀请他人加入组织。详情请参见 邀请组织成员。
管理员可以修改成员角色
管理员可以修改其他成员的角色。他们还可以为组织创建更具体的角色,例如部门负责人、项目经理、协调员等。可以通过以下 Management API 实现:
curl \
-X POST https://[tenant_id].logto.app/api/organizations/{id}/users/{userId}/roles \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"organizationRoleIds":["admin"]}'
或者批量操作:
curl \
-X POST https://[tenant_id].logto.app/api/organizations/{id}/users/roles \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"userIds":["userId1", "userId2"],"organizationRoleIds":["admin"]}'
向组织添加机器人
你还可以允许管理员向特定组织添加机器人。首先创建机器对机器 (M2M) 应用,然后将这些 M2M 应用作为机器人添加到组织中。
curl \
-X POST https://[tenant_id].logto.app/api/organizations/{id}/applications \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"applicationIds":["botAppId"]}'
然后你还可以为这些机器人分配组织角色。
curl \
-X POST https://[tenant_id].logto.app/api/organizations/{id}/applications/roles \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"applicationIds":["botApp1"],"organizationRoleIds":["botRoleId"]}'