diff --git a/framework/Volo.Abp.sln b/framework/Volo.Abp.sln index 1c201237e3..fc6755c18a 100644 --- a/framework/Volo.Abp.sln +++ b/framework/Volo.Abp.sln @@ -439,6 +439,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Ldap.Abstractions" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Ddd.Domain.Shared", "src\Volo.Abp.Ddd.Domain.Shared\Volo.Abp.Ddd.Domain.Shared.csproj", "{0858571B-CE73-4AD6-BD06-EC9F0714D8E9}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.MultiTenancy.Abstractions", "src\Volo.Abp.MultiTenancy.Abstractions\Volo.Abp.MultiTenancy.Abstractions.csproj", "{86F3684C-A0A5-4943-8CFA-AE79E8E3E315}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -1309,6 +1311,10 @@ Global {0858571B-CE73-4AD6-BD06-EC9F0714D8E9}.Debug|Any CPU.Build.0 = Debug|Any CPU {0858571B-CE73-4AD6-BD06-EC9F0714D8E9}.Release|Any CPU.ActiveCfg = Release|Any CPU {0858571B-CE73-4AD6-BD06-EC9F0714D8E9}.Release|Any CPU.Build.0 = Release|Any CPU + {86F3684C-A0A5-4943-8CFA-AE79E8E3E315}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {86F3684C-A0A5-4943-8CFA-AE79E8E3E315}.Debug|Any CPU.Build.0 = Debug|Any CPU + {86F3684C-A0A5-4943-8CFA-AE79E8E3E315}.Release|Any CPU.ActiveCfg = Release|Any CPU + {86F3684C-A0A5-4943-8CFA-AE79E8E3E315}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1530,6 +1536,7 @@ Global {8764DFAF-D13D-449A-9A5E-5D7F0B2D7FEF} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {0F80E95C-41E6-4F23-94FF-FC9D0B8D5D71} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {0858571B-CE73-4AD6-BD06-EC9F0714D8E9} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} + {86F3684C-A0A5-4943-8CFA-AE79E8E3E315} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5} diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo.Abp.AspNetCore.Components.csproj b/framework/src/Volo.Abp.AspNetCore.Components/Volo.Abp.AspNetCore.Components.csproj index 79d67f8b57..95c23d34ad 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo.Abp.AspNetCore.Components.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo.Abp.AspNetCore.Components.csproj @@ -18,6 +18,7 @@ + diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpAspNetCoreComponentsModule.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpAspNetCoreComponentsModule.cs index b73432b38a..dd48830a24 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpAspNetCoreComponentsModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpAspNetCoreComponentsModule.cs @@ -4,6 +4,7 @@ using Volo.Abp.AspNetCore.Components.DependencyInjection; using Volo.Abp.DynamicProxy; using Volo.Abp.Localization; using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; using Volo.Abp.ObjectMapping; using Volo.Abp.Security; using Volo.Abp.Timing; @@ -13,7 +14,8 @@ namespace Volo.Abp.AspNetCore.Components; [DependsOn( typeof(AbpObjectMappingModule), typeof(AbpSecurityModule), - typeof(AbpTimingModule) + typeof(AbpTimingModule), + typeof(AbpMultiTenancyAbstractionsModule) )] public class AbpAspNetCoreComponentsModule : AbpModule { diff --git a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs index bad4b7c491..525675d557 100644 --- a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs +++ b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs @@ -10,6 +10,7 @@ using Volo.Abp.Authorization; using Volo.Abp.ExceptionHandling; using Volo.Abp.Http; using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; using Volo.Abp.Security; using Volo.Abp.Uow; using Volo.Abp.Validation; @@ -25,6 +26,7 @@ namespace Volo.Abp.AspNetCore; typeof(AbpHttpModule), typeof(AbpAuthorizationModule), typeof(AbpValidationModule), + typeof(AbpMultiTenancyModule), typeof(AbpExceptionHandlingModule) )] public class AbpAspNetCoreModule : AbpModule diff --git a/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/AbpAuthorizationAbstractionsModule.cs b/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/AbpAuthorizationAbstractionsModule.cs index 11d6d5a634..e1e40cd205 100644 --- a/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/AbpAuthorizationAbstractionsModule.cs +++ b/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/AbpAuthorizationAbstractionsModule.cs @@ -4,7 +4,7 @@ using Volo.Abp.MultiTenancy; namespace Volo.Abp.Authorization; [DependsOn( - typeof(AbpMultiTenancyModule) + typeof(AbpMultiTenancyAbstractionsModule) )] public class AbpAuthorizationAbstractionsModule : AbpModule { diff --git a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/AbpAuthorizationModule.cs b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/AbpAuthorizationModule.cs index cb244599c2..d8226bdee5 100644 --- a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/AbpAuthorizationModule.cs +++ b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/AbpAuthorizationModule.cs @@ -8,6 +8,7 @@ using Volo.Abp.Authorization.Permissions; using Volo.Abp.Localization; using Volo.Abp.Localization.ExceptionHandling; using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; using Volo.Abp.Security; using Volo.Abp.VirtualFileSystem; @@ -16,7 +17,8 @@ namespace Volo.Abp.Authorization; [DependsOn( typeof(AbpAuthorizationAbstractionsModule), typeof(AbpSecurityModule), - typeof(AbpLocalizationModule) + typeof(AbpLocalizationModule), + typeof(AbpMultiTenancyModule) )] public class AbpAuthorizationModule : AbpModule { diff --git a/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo.Abp.BackgroundJobs.Abstractions.csproj b/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo.Abp.BackgroundJobs.Abstractions.csproj index 6a7eded3d8..3633fd45e3 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo.Abp.BackgroundJobs.Abstractions.csproj +++ b/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo.Abp.BackgroundJobs.Abstractions.csproj @@ -16,6 +16,7 @@ + diff --git a/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/AbpBackgroundJobsAbstractionsModule.cs b/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/AbpBackgroundJobsAbstractionsModule.cs index 8d3dc6caf5..4bad5cee72 100644 --- a/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/AbpBackgroundJobsAbstractionsModule.cs +++ b/framework/src/Volo.Abp.BackgroundJobs.Abstractions/Volo/Abp/BackgroundJobs/AbpBackgroundJobsAbstractionsModule.cs @@ -3,12 +3,14 @@ using System.Collections.Generic; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Json; using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; using Volo.Abp.Reflection; namespace Volo.Abp.BackgroundJobs; [DependsOn( - typeof(AbpJsonModule) + typeof(AbpJsonModule), + typeof(AbpMultiTenancyAbstractionsModule) )] public class AbpBackgroundJobsAbstractionsModule : AbpModule { diff --git a/framework/src/Volo.Abp.BackgroundJobs/Volo.Abp.BackgroundJobs.csproj b/framework/src/Volo.Abp.BackgroundJobs/Volo.Abp.BackgroundJobs.csproj index a9450e134c..0ef692a9f2 100644 --- a/framework/src/Volo.Abp.BackgroundJobs/Volo.Abp.BackgroundJobs.csproj +++ b/framework/src/Volo.Abp.BackgroundJobs/Volo.Abp.BackgroundJobs.csproj @@ -19,6 +19,7 @@ + diff --git a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/AbpBackgroundJobsModule.cs b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/AbpBackgroundJobsModule.cs index 08cc66130c..793cf99634 100644 --- a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/AbpBackgroundJobsModule.cs +++ b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/AbpBackgroundJobsModule.cs @@ -6,6 +6,7 @@ using Volo.Abp.Data; using Volo.Abp.DistributedLocking; using Volo.Abp.Guids; using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; using Volo.Abp.Threading; using Volo.Abp.Timing; @@ -16,7 +17,8 @@ namespace Volo.Abp.BackgroundJobs; typeof(AbpBackgroundWorkersModule), typeof(AbpTimingModule), typeof(AbpGuidsModule), - typeof(AbpDistributedLockingAbstractionsModule) + typeof(AbpDistributedLockingAbstractionsModule), + typeof(AbpMultiTenancyModule) )] public class AbpBackgroundJobsModule : AbpModule { diff --git a/framework/src/Volo.Abp.BlazoriseUI/AbpBlazoriseUIModule.cs b/framework/src/Volo.Abp.BlazoriseUI/AbpBlazoriseUIModule.cs index 198dce54fc..41880b95fb 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/AbpBlazoriseUIModule.cs +++ b/framework/src/Volo.Abp.BlazoriseUI/AbpBlazoriseUIModule.cs @@ -6,13 +6,15 @@ using Volo.Abp.Application; using Volo.Abp.AspNetCore.Components.Web; using Volo.Abp.Authorization; using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; namespace Volo.Abp.BlazoriseUI; [DependsOn( typeof(AbpAspNetCoreComponentsWebModule), typeof(AbpDddApplicationContractsModule), - typeof(AbpAuthorizationModule) + typeof(AbpAuthorizationModule), + typeof(AbpMultiTenancyModule) )] public class AbpBlazoriseUIModule : AbpModule { @@ -32,4 +34,4 @@ public class AbpBlazoriseUIModule : AbpModule context.Services.Replace(ServiceDescriptor.Scoped()); context.Services.AddSingleton(typeof(AbpBlazorMessageLocalizerHelper<>)); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo.Abp.Ddd.Application.Contracts.csproj b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo.Abp.Ddd.Application.Contracts.csproj index bde6d12081..ae01d66fd0 100644 --- a/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo.Abp.Ddd.Application.Contracts.csproj +++ b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo.Abp.Ddd.Application.Contracts.csproj @@ -22,6 +22,7 @@ + diff --git a/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/AbpDddApplicationContractsModule.cs b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/AbpDddApplicationContractsModule.cs index 76015e2f13..7d83d3e603 100644 --- a/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/AbpDddApplicationContractsModule.cs +++ b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/AbpDddApplicationContractsModule.cs @@ -1,5 +1,6 @@ using Volo.Abp.Application.Localization.Resources.AbpDdd; using Volo.Abp.Auditing; +using Volo.Abp.Data; using Volo.Abp.Localization; using Volo.Abp.Modularity; using Volo.Abp.VirtualFileSystem; @@ -8,7 +9,8 @@ namespace Volo.Abp.Application; [DependsOn( typeof(AbpLocalizationModule), - typeof(AbpAuditingContractsModule) + typeof(AbpAuditingContractsModule), + typeof(AbpDataModule) )] public class AbpDddApplicationContractsModule : AbpModule { diff --git a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/AbpDddApplicationModule.cs b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/AbpDddApplicationModule.cs index bef608a6ff..057ae123fd 100644 --- a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/AbpDddApplicationModule.cs +++ b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/AbpDddApplicationModule.cs @@ -9,6 +9,7 @@ using Volo.Abp.GlobalFeatures; using Volo.Abp.Http; using Volo.Abp.Http.Modeling; using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; using Volo.Abp.ObjectMapping; using Volo.Abp.Security; using Volo.Abp.Settings; @@ -26,6 +27,7 @@ namespace Volo.Abp.Application; typeof(AbpAuthorizationModule), typeof(AbpHttpAbstractionsModule), typeof(AbpSettingsModule), + typeof(AbpMultiTenancyModule), typeof(AbpFeaturesModule), typeof(AbpGlobalFeaturesModule) )] diff --git a/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/AbpDddDomainSharedModule.cs b/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/AbpDddDomainSharedModule.cs index 3276f22310..2ddf948022 100644 --- a/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/AbpDddDomainSharedModule.cs +++ b/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/AbpDddDomainSharedModule.cs @@ -5,7 +5,7 @@ using Volo.Abp.MultiTenancy; namespace Volo.Abp.Domain; [DependsOn( - typeof(AbpMultiTenancyModule), + typeof(AbpMultiTenancyAbstractionsModule), typeof(AbpEventBusAbstractionsModule) )] public class AbpDddDomainSharedModule : AbpModule diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs index 536e31e51f..24f390be2f 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs @@ -7,6 +7,7 @@ using Volo.Abp.EventBus; using Volo.Abp.ExceptionHandling; using Volo.Abp.Guids; using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; using Volo.Abp.ObjectMapping; using Volo.Abp.Specifications; using Volo.Abp.Timing; @@ -17,6 +18,7 @@ namespace Volo.Abp.Domain; typeof(AbpAuditingModule), typeof(AbpDataModule), typeof(AbpEventBusModule), + typeof(AbpMultiTenancyModule), typeof(AbpGuidsModule), typeof(AbpTimingModule), typeof(AbpObjectMappingModule), diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo.Abp.ExceptionHandling.csproj b/framework/src/Volo.Abp.ExceptionHandling/Volo.Abp.ExceptionHandling.csproj index 96c708d6c6..7e3061e8c7 100644 --- a/framework/src/Volo.Abp.ExceptionHandling/Volo.Abp.ExceptionHandling.csproj +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo.Abp.ExceptionHandling.csproj @@ -11,6 +11,7 @@ + diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/AbpExceptionHandlingModule.cs b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/AbpExceptionHandlingModule.cs index a541c2624d..762de89c82 100644 --- a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/AbpExceptionHandlingModule.cs +++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/AbpExceptionHandlingModule.cs @@ -1,4 +1,5 @@ -using Volo.Abp.ExceptionHandling.Localization; +using Volo.Abp.Data; +using Volo.Abp.ExceptionHandling.Localization; using Volo.Abp.Localization; using Volo.Abp.Modularity; using Volo.Abp.VirtualFileSystem; @@ -11,7 +12,8 @@ namespace Volo.Abp.ExceptionHandling; * We will re-design this package in a later time, probably with v5.0. */ [DependsOn( - typeof(AbpLocalizationModule) + typeof(AbpLocalizationModule), + typeof(AbpDataModule) )] public class AbpExceptionHandlingModule : AbpModule { diff --git a/framework/src/Volo.Abp.Json.SystemTextJson/Volo.Abp.Json.SystemTextJson.csproj b/framework/src/Volo.Abp.Json.SystemTextJson/Volo.Abp.Json.SystemTextJson.csproj index e7551a0e42..e157d5b7db 100644 --- a/framework/src/Volo.Abp.Json.SystemTextJson/Volo.Abp.Json.SystemTextJson.csproj +++ b/framework/src/Volo.Abp.Json.SystemTextJson/Volo.Abp.Json.SystemTextJson.csproj @@ -17,6 +17,7 @@ + diff --git a/framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/AbpJsonSystemTextJsonModule.cs b/framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/AbpJsonSystemTextJsonModule.cs index 3f193398e3..3afa1b8bde 100644 --- a/framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/AbpJsonSystemTextJsonModule.cs +++ b/framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/AbpJsonSystemTextJsonModule.cs @@ -2,6 +2,7 @@ using System.Text.Encodings.Web; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using Volo.Abp.Data; using Volo.Abp.Json.SystemTextJson.JsonConverters; using Volo.Abp.Json.SystemTextJson.Modifiers; using Volo.Abp.Modularity; @@ -9,7 +10,7 @@ using Volo.Abp.Timing; namespace Volo.Abp.Json.SystemTextJson; -[DependsOn(typeof(AbpJsonAbstractionsModule), typeof(AbpTimingModule))] +[DependsOn(typeof(AbpJsonAbstractionsModule), typeof(AbpTimingModule), typeof(AbpDataModule))] public class AbpJsonSystemTextJsonModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) diff --git a/framework/src/Volo.Abp.MultiTenancy.Abstractions/FodyWeavers.xml b/framework/src/Volo.Abp.MultiTenancy.Abstractions/FodyWeavers.xml new file mode 100644 index 0000000000..1715698ccd --- /dev/null +++ b/framework/src/Volo.Abp.MultiTenancy.Abstractions/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.MultiTenancy.Abstractions/FodyWeavers.xsd b/framework/src/Volo.Abp.MultiTenancy.Abstractions/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/framework/src/Volo.Abp.MultiTenancy.Abstractions/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.MultiTenancy/System/Security/Principal/AbpMultiTenancyClaimsIdentityExtensions.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/System/Security/Principal/AbpMultiTenancyClaimsIdentityExtensions.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/System/Security/Principal/AbpMultiTenancyClaimsIdentityExtensions.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/System/Security/Principal/AbpMultiTenancyClaimsIdentityExtensions.cs diff --git a/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo.Abp.MultiTenancy.Abstractions.csproj b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo.Abp.MultiTenancy.Abstractions.csproj new file mode 100644 index 0000000000..ec96383fc8 --- /dev/null +++ b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo.Abp.MultiTenancy.Abstractions.csproj @@ -0,0 +1,28 @@ + + + + + + + netstandard2.0;netstandard2.1;net7.0 + Volo.Abp.MultiTenancy.Abstractions + Volo.Abp.MultiTenancy.Abstractions + $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; + false + false + false + + + + + + + + + + + + + + + diff --git a/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/AbpMultiTenancyAbstractionsModule.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/AbpMultiTenancyAbstractionsModule.cs new file mode 100644 index 0000000000..3734adcb71 --- /dev/null +++ b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/AbpMultiTenancyAbstractionsModule.cs @@ -0,0 +1,28 @@ +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy.Localization; +using Volo.Abp.VirtualFileSystem; + +namespace Volo.Abp.MultiTenancy; + +[DependsOn( + typeof(AbpVirtualFileSystemModule), + typeof(AbpLocalizationModule) +)] +public class AbpMultiTenancyAbstractionsModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + Configure(options => + { + options.Resources + .Add("en") + .AddVirtualJson("/Volo/Abp/MultiTenancy/Localization"); + }); + } +} diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/AbpMultiTenancyOptions.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/AbpMultiTenancyOptions.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/AbpMultiTenancyOptions.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/AbpMultiTenancyOptions.cs diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/AbpTenantResolveOptions.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/AbpTenantResolveOptions.cs similarity index 64% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/AbpTenantResolveOptions.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/AbpTenantResolveOptions.cs index ff96958c85..414983c87a 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/AbpTenantResolveOptions.cs +++ b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/AbpTenantResolveOptions.cs @@ -10,9 +10,6 @@ public class AbpTenantResolveOptions public AbpTenantResolveOptions() { - TenantResolvers = new List - { - new CurrentUserTenantResolveContributor() - }; + TenantResolvers = new List(); } } diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/BasicTenantInfo.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/BasicTenantInfo.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/BasicTenantInfo.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/BasicTenantInfo.cs diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ConfigurationStore/AbpDefaultTenantStoreOptions.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ConfigurationStore/AbpDefaultTenantStoreOptions.cs similarity index 55% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ConfigurationStore/AbpDefaultTenantStoreOptions.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ConfigurationStore/AbpDefaultTenantStoreOptions.cs index 3970265b70..478d692cf8 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ConfigurationStore/AbpDefaultTenantStoreOptions.cs +++ b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ConfigurationStore/AbpDefaultTenantStoreOptions.cs @@ -1,4 +1,6 @@ -namespace Volo.Abp.MultiTenancy.ConfigurationStore; +using System; + +namespace Volo.Abp.MultiTenancy.ConfigurationStore; public class AbpDefaultTenantStoreOptions { @@ -6,6 +8,6 @@ public class AbpDefaultTenantStoreOptions public AbpDefaultTenantStoreOptions() { - Tenants = new TenantConfiguration[0]; + Tenants = Array.Empty(); } } diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ICurrentTenant.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ICurrentTenant.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ICurrentTenant.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ICurrentTenant.cs diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ICurrentTenantAccessor.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ICurrentTenantAccessor.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ICurrentTenantAccessor.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ICurrentTenantAccessor.cs diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/IMultiTenant.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/IMultiTenant.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/IMultiTenant.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/IMultiTenant.cs diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantConfigurationProvider.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantConfigurationProvider.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantConfigurationProvider.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantConfigurationProvider.cs diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantResolveContext.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantResolveContext.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantResolveContext.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantResolveContext.cs diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantResolveContributor.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantResolveContributor.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantResolveContributor.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantResolveContributor.cs diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantResolveResultAccessor.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantResolveResultAccessor.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantResolveResultAccessor.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantResolveResultAccessor.cs diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantResolver.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantResolver.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantResolver.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantResolver.cs diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantStore.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantStore.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantStore.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/ITenantStore.cs diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/IgnoreMultiTenancyAttribute.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/IgnoreMultiTenancyAttribute.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/IgnoreMultiTenancyAttribute.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/IgnoreMultiTenancyAttribute.cs diff --git a/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/AbpMultiTenancyResource.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/AbpMultiTenancyResource.cs new file mode 100644 index 0000000000..c08fe856d6 --- /dev/null +++ b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/AbpMultiTenancyResource.cs @@ -0,0 +1,9 @@ +using Volo.Abp.Localization; + +namespace Volo.Abp.MultiTenancy.Localization; + +[LocalizationResourceName("AbpMultiTenancy")] +public class AbpMultiTenancyResource +{ + +} diff --git a/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/en-GB.json b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/en-GB.json new file mode 100644 index 0000000000..0c2b24e68a --- /dev/null +++ b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/en-GB.json @@ -0,0 +1,9 @@ +{ + "culture": "en-GB", + "texts": { + "TenantNotFoundMessage": "Tenant not found!", + "TenantNotFoundDetails": "There is no tenant with the tenant id or name: {0}", + "TenantNotActiveMessage": "Tenant is not active!", + "TenantNotActiveDetails": "The tenant is not active with the tenant id or name: {0}" + } +} diff --git a/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/en.json b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/en.json new file mode 100644 index 0000000000..b1242d8437 --- /dev/null +++ b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/en.json @@ -0,0 +1,9 @@ +{ + "culture": "en", + "texts": { + "TenantNotFoundMessage": "Tenant not found!", + "TenantNotFoundDetails": "There is no tenant with the tenant id or name: {0}", + "TenantNotActiveMessage": "Tenant is not active!", + "TenantNotActiveDetails": "The tenant is not active with the tenant id or name: {0}" + } +} diff --git a/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/tr.json b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/tr.json new file mode 100644 index 0000000000..94a930344c --- /dev/null +++ b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/tr.json @@ -0,0 +1,9 @@ +{ + "culture": "tr", + "texts": { + "TenantNotFoundMessage": "Kiracı bulunamadı!", + "TenantNotFoundDetails": "Kiracı kimliğine veya adına sahip bir kiracı yok: {0}", + "TenantNotActiveMessage": "Kiracı aktif değil!", + "TenantNotActiveDetails": "Kiracı, kiracı kimliği veya adıyla etkin değil: {0}" + } +} diff --git a/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/zh-Hans.json b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/zh-Hans.json new file mode 100644 index 0000000000..b093513c77 --- /dev/null +++ b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/zh-Hans.json @@ -0,0 +1,9 @@ +{ + "culture": "zh-Hans", + "texts": { + "TenantNotFoundMessage": "找不到租户!", + "TenantNotFoundDetails": "无法找到ID或名称为{0}的租户", + "TenantNotActiveMessage": "租户未启用!", + "TenantNotActiveDetails": "ID或名称为{0}的租户未启用" + } +} diff --git a/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/zh-Hant.json b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/zh-Hant.json new file mode 100644 index 0000000000..218709e7c3 --- /dev/null +++ b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/Localization/zh-Hant.json @@ -0,0 +1,9 @@ +{ + "culture": "zh-Hant", + "texts": { + "TenantNotFoundMessage": "找不到租戶!", + "TenantNotFoundDetails": "無法找到ID或名稱為{0}的租戶", + "TenantNotActiveMessage": "租戶未啟用!", + "TenantNotActiveDetails": "ID或名稱為{0}的租戶未啟用" + } +} diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenancyDatabaseStyle.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/MultiTenancyDatabaseStyle.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenancyDatabaseStyle.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/MultiTenancyDatabaseStyle.cs diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenancySides.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/MultiTenancySides.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenancySides.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/MultiTenancySides.cs diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfiguration.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantConfiguration.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfiguration.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantConfiguration.cs diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConnectionStringUpdatedEto.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantConnectionStringUpdatedEto.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConnectionStringUpdatedEto.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantConnectionStringUpdatedEto.cs diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantCreatedEto.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantCreatedEto.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantCreatedEto.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantCreatedEto.cs diff --git a/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantResolveContext.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantResolveContext.cs new file mode 100644 index 0000000000..86b0586c56 --- /dev/null +++ b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantResolveContext.cs @@ -0,0 +1,22 @@ +using System; + +namespace Volo.Abp.MultiTenancy; + +public class TenantResolveContext : ITenantResolveContext +{ + public IServiceProvider ServiceProvider { get; } + + public string TenantIdOrName { get; set; } + + public bool Handled { get; set; } + + public bool HasResolvedTenantOrHost() + { + return Handled || TenantIdOrName != null; + } + + public TenantResolveContext(IServiceProvider serviceProvider) + { + ServiceProvider = serviceProvider; + } +} diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantResolveResult.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantResolveResult.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantResolveResult.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantResolveResult.cs diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantResolverConsts.cs b/framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantResolverConsts.cs similarity index 100% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantResolverConsts.cs rename to framework/src/Volo.Abp.MultiTenancy.Abstractions/Volo/Abp/MultiTenancy/TenantResolverConsts.cs diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo.Abp.MultiTenancy.csproj b/framework/src/Volo.Abp.MultiTenancy/Volo.Abp.MultiTenancy.csproj index b8948be49f..59aa7ef6d1 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo.Abp.MultiTenancy.csproj +++ b/framework/src/Volo.Abp.MultiTenancy/Volo.Abp.MultiTenancy.csproj @@ -17,7 +17,11 @@ + + + + diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/AbpMultiTenancyModule.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/AbpMultiTenancyModule.cs index 822af3ff3c..a6acd17f51 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/AbpMultiTenancyModule.cs +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/AbpMultiTenancyModule.cs @@ -1,18 +1,19 @@ -using Microsoft.Extensions.DependencyInjection; +using System.Collections.Generic; +using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Data; using Volo.Abp.EventBus.Abstractions; using Volo.Abp.Modularity; using Volo.Abp.MultiTenancy.ConfigurationStore; using Volo.Abp.Security; +using Volo.Abp.Settings; namespace Volo.Abp.MultiTenancy; -//TODO: Create a Volo.Abp.MultiTenancy.Abstractions package? - [DependsOn( typeof(AbpDataModule), typeof(AbpSecurityModule), - typeof(AbpEventBusAbstractionsModule) + typeof(AbpEventBusAbstractionsModule), + typeof(AbpMultiTenancyAbstractionsModule) )] public class AbpMultiTenancyModule : AbpModule { @@ -22,5 +23,15 @@ public class AbpMultiTenancyModule : AbpModule var configuration = context.Services.GetConfiguration(); Configure(configuration); + + Configure(options => + { + options.ValueProviders.InsertAfter(t => t == typeof(GlobalSettingValueProvider), typeof(TenantSettingValueProvider)); + }); + + Configure(options => + { + options.TenantResolvers.Add(new CurrentUserTenantResolveContributor()); + }); } } diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfigurationProvider.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfigurationProvider.cs index 9d104cf7b6..7df558f9f3 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfigurationProvider.cs +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfigurationProvider.cs @@ -1,6 +1,8 @@ using System; using System.Threading.Tasks; +using Microsoft.Extensions.Localization; using Volo.Abp.DependencyInjection; +using Volo.Abp.MultiTenancy.Localization; namespace Volo.Abp.MultiTenancy; @@ -9,15 +11,18 @@ public class TenantConfigurationProvider : ITenantConfigurationProvider, ITransi protected virtual ITenantResolver TenantResolver { get; } protected virtual ITenantStore TenantStore { get; } protected virtual ITenantResolveResultAccessor TenantResolveResultAccessor { get; } + protected virtual IStringLocalizer StringLocalizer { get; } public TenantConfigurationProvider( ITenantResolver tenantResolver, ITenantStore tenantStore, - ITenantResolveResultAccessor tenantResolveResultAccessor) + ITenantResolveResultAccessor tenantResolveResultAccessor, + IStringLocalizer stringLocalizer) { TenantResolver = tenantResolver; TenantStore = tenantStore; TenantResolveResultAccessor = tenantResolveResultAccessor; + StringLocalizer = stringLocalizer; } public virtual async Task GetAsync(bool saveResolveResult = false) @@ -38,8 +43,8 @@ public class TenantConfigurationProvider : ITenantConfigurationProvider, ITransi { throw new BusinessException( code: "Volo.AbpIo.MultiTenancy:010001", - message: "Tenant not found!", - details: "There is no tenant with the tenant id or name: " + resolveResult.TenantIdOrName + message: StringLocalizer["TenantNotFoundMessage"], + details: StringLocalizer["TenantNotFoundDetails", resolveResult.TenantIdOrName] ); } @@ -47,8 +52,8 @@ public class TenantConfigurationProvider : ITenantConfigurationProvider, ITransi { throw new BusinessException( code: "Volo.AbpIo.MultiTenancy:010002", - message: "Tenant not active!", - details: "The tenant is no active with the tenant id or name: " + resolveResult.TenantIdOrName + message: StringLocalizer["TenantNotActiveMessage"], + details: StringLocalizer["TenantNotActiveDetails", resolveResult.TenantIdOrName] ); } } diff --git a/framework/src/Volo.Abp.Settings/Volo/Abp/Settings/TenantSettingValueProvider.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantSettingValueProvider.cs similarity index 93% rename from framework/src/Volo.Abp.Settings/Volo/Abp/Settings/TenantSettingValueProvider.cs rename to framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantSettingValueProvider.cs index 880be2709d..39c7803d52 100644 --- a/framework/src/Volo.Abp.Settings/Volo/Abp/Settings/TenantSettingValueProvider.cs +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantSettingValueProvider.cs @@ -19,7 +19,7 @@ public class TenantSettingValueProvider : SettingValueProvider CurrentTenant = currentTenant; } - public override async Task GetOrNullAsync(SettingDefinition setting) + public async override Task GetOrNullAsync(SettingDefinition setting) { return await SettingStore.GetOrNullAsync(setting.Name, Name, CurrentTenant.Id?.ToString()); } diff --git a/framework/src/Volo.Abp.Settings/Volo.Abp.Settings.csproj b/framework/src/Volo.Abp.Settings/Volo.Abp.Settings.csproj index fdedd2fc69..524f932e9c 100644 --- a/framework/src/Volo.Abp.Settings/Volo.Abp.Settings.csproj +++ b/framework/src/Volo.Abp.Settings/Volo.Abp.Settings.csproj @@ -16,8 +16,8 @@ - + diff --git a/framework/src/Volo.Abp.Settings/Volo/Abp/Settings/AbpSettingsModule.cs b/framework/src/Volo.Abp.Settings/Volo/Abp/Settings/AbpSettingsModule.cs index eb05fbb949..00c3d9e7e5 100644 --- a/framework/src/Volo.Abp.Settings/Volo/Abp/Settings/AbpSettingsModule.cs +++ b/framework/src/Volo.Abp.Settings/Volo/Abp/Settings/AbpSettingsModule.cs @@ -3,16 +3,16 @@ using System.Collections.Generic; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Localization; using Volo.Abp.Modularity; -using Volo.Abp.MultiTenancy; using Volo.Abp.Security; +using Volo.Abp.Data; namespace Volo.Abp.Settings; [DependsOn( typeof(AbpLocalizationAbstractionsModule), typeof(AbpSecurityModule), - typeof(AbpMultiTenancyModule) - )] + typeof(AbpDataModule) +)] public class AbpSettingsModule : AbpModule { public override void PreConfigureServices(ServiceConfigurationContext context) @@ -27,7 +27,6 @@ public class AbpSettingsModule : AbpModule options.ValueProviders.Add(); options.ValueProviders.Add(); options.ValueProviders.Add(); - options.ValueProviders.Add(); options.ValueProviders.Add(); }); } diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/AbpUiNavigationModule.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/AbpUiNavigationModule.cs index f1b6124c4d..9074943396 100644 --- a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/AbpUiNavigationModule.cs +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/AbpUiNavigationModule.cs @@ -1,12 +1,13 @@ using Volo.Abp.Authorization; using Volo.Abp.Localization; using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; using Volo.Abp.UI.Navigation.Localization.Resource; using Volo.Abp.VirtualFileSystem; namespace Volo.Abp.UI.Navigation; -[DependsOn(typeof(AbpUiModule), typeof(AbpAuthorizationModule))] +[DependsOn(typeof(AbpUiModule), typeof(AbpAuthorizationModule), typeof(AbpMultiTenancyModule))] public class AbpUiNavigationModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) diff --git a/framework/test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/MultiTenancy/MultiTenancyResource_Tests.cs b/framework/test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/MultiTenancy/MultiTenancyResource_Tests.cs new file mode 100644 index 0000000000..c09b7b9507 --- /dev/null +++ b/framework/test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/MultiTenancy/MultiTenancyResource_Tests.cs @@ -0,0 +1,25 @@ +using Microsoft.Extensions.Localization; +using Shouldly; +using Volo.Abp.Localization; +using Volo.Abp.MultiTenancy.Localization; +using Xunit; + +namespace Volo.Abp.MultiTenancy; + +public class MultiTenancyResource_Tests : MultiTenancyTestBase +{ + [Fact] + public void MultiTenancyResource_Test() + { + var q = GetRequiredService>(); + using (CultureHelper.Use("en")) + { + GetRequiredService>()["TenantNotFoundMessage"].Value.ShouldBe("Tenant not found!"); + } + + using (CultureHelper.Use("tr")) + { + GetRequiredService>()["TenantNotFoundMessage"].Value.ShouldBe("Kiracı bulunamadı!"); + } + } +} diff --git a/nupkg/common.ps1 b/nupkg/common.ps1 index bf3cf46bad..8a82d0d950 100644 --- a/nupkg/common.ps1 +++ b/nupkg/common.ps1 @@ -211,6 +211,7 @@ $projects = ( "framework/src/Volo.Abp.Localization", "framework/src/Volo.Abp.MemoryDb", "framework/src/Volo.Abp.MongoDB", + "framework/src/Volo.Abp.MultiTenancy.Abstractions", "framework/src/Volo.Abp.MultiTenancy", "framework/src/Volo.Abp.Minify", "framework/src/Volo.Abp.ObjectExtending",