我目前正在开发多租户SaaS。
我们系统中的每个租户都是订阅(想想Azure订阅),订阅的所有者可以在订阅中创建多个商店。然后,他们可以邀请用户进行订阅,并授予他们访问各个商店的权限。
有点像:
App
|- Subscription A (owned by Bob)
| |- Store A (access granted to Alice)
| |- Store B
|
|- Subscription B (owned by ...)
| |- Store A'
| |- ...
|- ...
我们需要的是Bob可以邀请Alice订阅他的订阅并授予她访问Store A的权限.Alice不能访问Store B.
我对ABP的理解是我可以使用内置的多租户模型实现订阅。但我不明白的是我怎样才能将它扩展到商店级别?
我们能否以某种方式将组织单位与多租户模型相结合才能使其发挥作用?在我们的模型中,订阅包含所有计费信息,而商店最有可能代表(子)部门。
编辑:我知道组织单位触及这个场景,但是我们必须自己实现所有过滤。此外,如果我们想要将更多权限附加到某些商店,例如Alice是商店A的商店管理员,我们可以利用内置的权限模型而无需多次“手动”检查吗?
商店,部门或任何其他单位可以在ABP中以组织单位表示。
组织单位(OU)可用于对用户和实体进行分层分组。 OU由OrganizationUnit实体表示。该实体的基本属性是;
TenantId: Tenant's Id of this OU. Can be null for host OUs.
ParentId: Parent OU's Id. Can be null if this is a root OU.
Code: A hierarchical string code that is unique for a tenant.
DisplayName: Shown name of the OU.
了解更多信息
https://aspnetboilerplate.com/Pages/Documents/Zero/Organization-Units