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",