diff --git a/aspnet-core/framework/tenants/LINGYUN.Abp.MultiTenancy.Editions/README.EN.md b/aspnet-core/framework/tenants/LINGYUN.Abp.MultiTenancy.Editions/README.EN.md new file mode 100644 index 000000000..1a71a36d1 --- /dev/null +++ b/aspnet-core/framework/tenants/LINGYUN.Abp.MultiTenancy.Editions/README.EN.md @@ -0,0 +1,101 @@ +# LINGYUN.Abp.MultiTenancy.Editions + +Multi-tenancy edition management module, providing basic functionality support for tenant editions. + +## Features + +- Edition Management + - Support for assigning different editions to tenants + - Edition information includes ID and display name + - Support for edition information storage and retrieval +- Global Feature Toggles + - Control edition functionality through global feature switches + - Flexible configuration for enabling/disabling edition features +- Authentication Integration + - Automatically adds edition information to user Claims + - Support for accessing current tenant's edition information in applications +- Extensibility + - Provides IEditionStore interface for custom edition storage + - Support for custom edition configuration providers + +## Module Reference + +```csharp +[DependsOn(typeof(AbpMultiTenancyEditionsModule))] +public class YouProjectModule : AbpModule +{ + // other +} +``` + +## Configuration + +### 1. Global Feature Configuration + +```csharp +GlobalFeatureManager.Instance.Modules.Editions(editions => +{ + // Configure edition-related global features here +}); +``` + +### 2. Implementing Edition Storage + +```csharp +public class YourEditionStore : IEditionStore +{ + public async Task FindByTenantAsync(Guid tenantId) + { + // Implement logic to retrieve tenant edition information from storage + return new EditionInfo( + id: Guid.NewGuid(), + displayName: "Standard Edition" + ); + } +} +``` + +### 3. Retrieving Edition Information + +```csharp +public class YourService +{ + private readonly IEditionConfigurationProvider _editionProvider; + + public YourService(IEditionConfigurationProvider editionProvider) + { + _editionProvider = editionProvider; + } + + public async Task GetEditionAsync(Guid? tenantId) + { + return await _editionProvider.GetAsync(tenantId); + } +} +``` + +## Using Edition Information in Claims + +When edition functionality is enabled, the module automatically adds edition information to user Claims: + +```csharp +public class YourController +{ + public async Task GetEditionInfo() + { + var editionId = User.FindFirstValue(AbpClaimTypes.EditionId); + // Perform operations using the edition ID + } +} +``` + +## Important Notes + +1. Ensure global feature toggle is enabled before using edition functionality. +2. Edition storage implementation should consider performance and concurrent access issues. +3. Changes to edition information may affect tenant feature access permissions. +4. Edition information in Claims is automatically updated during user authentication. + +## More Documentation + +- [Chinese Documentation](README.md) diff --git a/aspnet-core/framework/tenants/LINGYUN.Abp.MultiTenancy.Editions/README.md b/aspnet-core/framework/tenants/LINGYUN.Abp.MultiTenancy.Editions/README.md new file mode 100644 index 000000000..925c202e7 --- /dev/null +++ b/aspnet-core/framework/tenants/LINGYUN.Abp.MultiTenancy.Editions/README.md @@ -0,0 +1,101 @@ +# LINGYUN.Abp.MultiTenancy.Editions + +多租户版本管理模块,提供租户版本(Edition)的基础功能支持。 + +## 功能特性 + +- 版本管理 + - 支持为租户分配不同版本 + - 版本信息包含 ID 和显示名称 + - 支持版本信息的存储和检索 +- 全局功能开关 + - 支持通过全局功能开关控制版本功能 + - 可灵活配置版本功能的启用/禁用 +- 身份认证集成 + - 自动将版本信息添加到用户 Claims 中 + - 支持在应用程序中获取当前租户的版本信息 +- 可扩展性 + - 提供 IEditionStore 接口用于自定义版本存储 + - 支持自定义版本配置提供程序 + +## 模块引用 + +```csharp +[DependsOn(typeof(AbpMultiTenancyEditionsModule))] +public class YouProjectModule : AbpModule +{ + // other +} +``` + +## 配置说明 + +### 1. 全局功能配置 + +```csharp +GlobalFeatureManager.Instance.Modules.Editions(editions => +{ + // 在这里配置版本相关的全局功能 +}); +``` + +### 2. 实现版本存储 + +```csharp +public class YourEditionStore : IEditionStore +{ + public async Task FindByTenantAsync(Guid tenantId) + { + // 实现从存储中获取租户版本信息的逻辑 + return new EditionInfo( + id: Guid.NewGuid(), + displayName: "Standard Edition" + ); + } +} +``` + +### 3. 获取版本信息 + +```csharp +public class YourService +{ + private readonly IEditionConfigurationProvider _editionProvider; + + public YourService(IEditionConfigurationProvider editionProvider) + { + _editionProvider = editionProvider; + } + + public async Task GetEditionAsync(Guid? tenantId) + { + return await _editionProvider.GetAsync(tenantId); + } +} +``` + +## 版本信息在 Claims 中的使用 + +当启用版本功能时,模块会自动将版本信息添加到用户的 Claims 中: + +```csharp +public class YourController +{ + public async Task GetEditionInfo() + { + var editionId = User.FindFirstValue(AbpClaimTypes.EditionId); + // 使用版本ID进行相关操作 + } +} +``` + +## 注意事项 + +1. 使用版本功能前需要确保已启用全局功能开关。 +2. 版本存储的实现需要考虑性能和并发访问的问题。 +3. 版本信息的变更可能会影响租户的功能访问权限。 +4. Claims 中的版本信息会在用户认证时自动更新。 + +## 更多文档 + +- [English Documentation](README.EN.md)