From f0dd8cd1e8a1fbbe386b6a9a8376dbe28b61e87a Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Tue, 26 Mar 2019 13:03:28 +0300 Subject: [PATCH] Added Name to ICurrentTenant --- .../MultiTenancy/MultiTenancyMiddleware.cs | 6 ++--- .../TenantSwitch/TenantSwitchViewComponent.cs | 2 +- .../AsyncLocalCurrentTenantIdAccessor.cs | 6 ++--- .../Volo/Abp/MultiTenancy/BasicTenantInfo.cs | 27 +++++++++++++++++++ .../ConfigurationStore/DefaultTenantStore.cs | 4 +-- .../DefaultTenantStoreOptions.cs | 4 +-- .../Volo/Abp/MultiTenancy/CurrentTenant.cs | 10 ++++--- .../Volo/Abp/MultiTenancy/ICurrentTenant.cs | 5 +++- .../MultiTenancy/ICurrentTenantIdAccessor.cs | 2 +- .../Volo/Abp/MultiTenancy/ITenantStore.cs | 4 +-- .../{TenantInfo.cs => TenantConfiguration.cs} | 6 ++--- .../Volo/Abp/MultiTenancy/TenantIdWrapper.cs | 18 ------------- .../Abp/MultiTenancy/TenantStoreExtensions.cs | 4 +-- .../AspNetCoreMultiTenancy_Tests.cs | 2 +- ...ltiTenantConnectionStringResolver_Tests.cs | 4 +-- .../Abp/MultiTenancy/CurrentTenant_Tests.cs | 4 +-- 16 files changed, 61 insertions(+), 47 deletions(-) create mode 100644 framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/BasicTenantInfo.cs rename framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/{TenantInfo.cs => TenantConfiguration.cs} (70%) delete mode 100644 framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantIdWrapper.cs diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs index ff0f1eb93f..cc000f68c5 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs @@ -28,13 +28,13 @@ namespace Volo.Abp.AspNetCore.MultiTenancy public async Task Invoke(HttpContext httpContext) { var tenant = await ResolveCurrentTenantAsync(); - using (_currentTenant.Change(tenant?.Id)) + using (_currentTenant.Change(tenant?.Id, tenant?.Name)) { await _next(httpContext); } } - private async Task ResolveCurrentTenantAsync() + private async Task ResolveCurrentTenantAsync() { var tenantIdOrName = _tenantResolver.ResolveTenantIdOrName(); if (tenantIdOrName == null) @@ -51,7 +51,7 @@ namespace Volo.Abp.AspNetCore.MultiTenancy return tenant; } - private async Task FindTenantAsync(string tenantIdOrName) + private async Task FindTenantAsync(string tenantIdOrName) { if (Guid.TryParse(tenantIdOrName, out var parsedTenantId)) { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Components/TenantSwitch/TenantSwitchViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Components/TenantSwitch/TenantSwitchViewComponent.cs index bfcaebed0e..f17a066c57 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Components/TenantSwitch/TenantSwitchViewComponent.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Components/TenantSwitch/TenantSwitchViewComponent.cs @@ -43,7 +43,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.Components.TenantSwitch public class TenantSwitchViewModel { - public TenantInfo Tenant { get; set; } + public TenantConfiguration Tenant { get; set; } public ICurrentUser CurrentUser { get; set; } } diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/AsyncLocalCurrentTenantIdAccessor.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/AsyncLocalCurrentTenantIdAccessor.cs index be2175df9a..6031e4efd2 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/AsyncLocalCurrentTenantIdAccessor.cs +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/AsyncLocalCurrentTenantIdAccessor.cs @@ -5,17 +5,17 @@ namespace Volo.Abp.MultiTenancy { public class AsyncLocalCurrentTenantIdAccessor : ICurrentTenantIdAccessor, ISingletonDependency { - public TenantIdWrapper Current + public BasicTenantInfo Current { get => _currentScope.Value; set => _currentScope.Value = value; } - private readonly AsyncLocal _currentScope; + private readonly AsyncLocal _currentScope; public AsyncLocalCurrentTenantIdAccessor() { - _currentScope = new AsyncLocal(); + _currentScope = new AsyncLocal(); } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/BasicTenantInfo.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/BasicTenantInfo.cs new file mode 100644 index 0000000000..96c60613de --- /dev/null +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/BasicTenantInfo.cs @@ -0,0 +1,27 @@ +using System; +using JetBrains.Annotations; + +namespace Volo.Abp.MultiTenancy +{ + public class BasicTenantInfo + { + /// + /// Null indicates the host. + /// Not null value for a tenant. + /// + [CanBeNull] + public Guid? TenantId { get; } + + /// + /// Name of the tenant if is not null. + /// + [CanBeNull] + public string Name { get; } + + public BasicTenantInfo(Guid? tenantId, string name = null) + { + TenantId = tenantId; + Name = name; + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ConfigurationStore/DefaultTenantStore.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ConfigurationStore/DefaultTenantStore.cs index c72955bb65..3e6ea4167a 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ConfigurationStore/DefaultTenantStore.cs +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ConfigurationStore/DefaultTenantStore.cs @@ -16,12 +16,12 @@ namespace Volo.Abp.MultiTenancy.ConfigurationStore _options = options.Value; } - public Task FindAsync(string name) + public Task FindAsync(string name) { return Task.FromResult(_options.Tenants?.FirstOrDefault(t => t.Name == name)); } - public Task FindAsync(Guid id) + public Task FindAsync(Guid id) { return Task.FromResult(_options.Tenants?.FirstOrDefault(t => t.Id == id)); } diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ConfigurationStore/DefaultTenantStoreOptions.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ConfigurationStore/DefaultTenantStoreOptions.cs index ae22fdc8b0..ee775cce98 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ConfigurationStore/DefaultTenantStoreOptions.cs +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ConfigurationStore/DefaultTenantStoreOptions.cs @@ -2,11 +2,11 @@ { public class DefaultTenantStoreOptions { - public TenantInfo[] Tenants { get; set; } + public TenantConfiguration[] Tenants { get; set; } public DefaultTenantStoreOptions() { - Tenants = new TenantInfo[0]; + Tenants = new TenantConfiguration[0]; } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/CurrentTenant.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/CurrentTenant.cs index 9aee172ba9..a286f5549c 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/CurrentTenant.cs +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/CurrentTenant.cs @@ -9,6 +9,8 @@ namespace Volo.Abp.MultiTenancy public virtual Guid? Id => _currentTenantIdAccessor.Current?.TenantId; + public string Name => _currentTenantIdAccessor.Current?.Name; + private readonly ICurrentTenantIdAccessor _currentTenantIdAccessor; public CurrentTenant(ICurrentTenantIdAccessor currentTenantIdAccessor) @@ -16,15 +18,15 @@ namespace Volo.Abp.MultiTenancy _currentTenantIdAccessor = currentTenantIdAccessor; } - public IDisposable Change(Guid? id) + public IDisposable Change(Guid? id, string name = null) { - return SetCurrent(id); + return SetCurrent(id, name); } - private IDisposable SetCurrent(Guid? tenantId) + private IDisposable SetCurrent(Guid? tenantId, string name = null) { var parentScope = _currentTenantIdAccessor.Current; - _currentTenantIdAccessor.Current = new TenantIdWrapper(tenantId); + _currentTenantIdAccessor.Current = new BasicTenantInfo(tenantId, name); return new DisposeAction(() => { _currentTenantIdAccessor.Current = parentScope; diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ICurrentTenant.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ICurrentTenant.cs index 15eb581a40..a9c608e74c 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ICurrentTenant.cs +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ICurrentTenant.cs @@ -10,6 +10,9 @@ namespace Volo.Abp.MultiTenancy [CanBeNull] Guid? Id { get; } - IDisposable Change(Guid? id); + [CanBeNull] + string Name { get; } + + IDisposable Change(Guid? id, string name = null); } } diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ICurrentTenantIdAccessor.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ICurrentTenantIdAccessor.cs index 49be15cd10..ae9fad6433 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ICurrentTenantIdAccessor.cs +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ICurrentTenantIdAccessor.cs @@ -8,6 +8,6 @@ namespace Volo.Abp.MultiTenancy public interface ICurrentTenantIdAccessor { - TenantIdWrapper Current { get; set; } + BasicTenantInfo Current { get; set; } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantStore.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantStore.cs index 7c45adde4c..b1c8f97f1a 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantStore.cs +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ITenantStore.cs @@ -5,8 +5,8 @@ namespace Volo.Abp.MultiTenancy { public interface ITenantStore { - Task FindAsync(string name); + Task FindAsync(string name); - Task FindAsync(Guid id); + Task FindAsync(Guid id); } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantInfo.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfiguration.cs similarity index 70% rename from framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantInfo.cs rename to framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfiguration.cs index 1c95cd7837..37ad3c74da 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantInfo.cs +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfiguration.cs @@ -5,7 +5,7 @@ using Volo.Abp.Data; namespace Volo.Abp.MultiTenancy { [Serializable] - public class TenantInfo //TODO: Add a custom data to TenantInfo and make it available in ICurrentTenant + public class TenantConfiguration { public Guid Id { get; set; } @@ -13,12 +13,12 @@ namespace Volo.Abp.MultiTenancy public ConnectionStrings ConnectionStrings { get; } - public TenantInfo() + public TenantConfiguration() { } - public TenantInfo(Guid id, [NotNull] string name) + public TenantConfiguration(Guid id, [NotNull] string name) { Check.NotNull(name, nameof(name)); diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantIdWrapper.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantIdWrapper.cs deleted file mode 100644 index 92f8c641d2..0000000000 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantIdWrapper.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; - -namespace Volo.Abp.MultiTenancy -{ - public class TenantIdWrapper - { - /// - /// Null indicates the host. - /// Not null value for a tenant. - /// - public Guid? TenantId { get; } - - public TenantIdWrapper(Guid? tenantId) - { - TenantId = tenantId; - } - } -} \ No newline at end of file diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantStoreExtensions.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantStoreExtensions.cs index 6ac6c0517b..290c683d95 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantStoreExtensions.cs +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantStoreExtensions.cs @@ -7,13 +7,13 @@ namespace Volo.Abp.MultiTenancy public static class TenantStoreExtensions { [CanBeNull] - public static TenantInfo Find(this ITenantStore tenantStore, string name) + public static TenantConfiguration Find(this ITenantStore tenantStore, string name) { return AsyncHelper.RunSync(() => tenantStore.FindAsync(name)); } [CanBeNull] - public static TenantInfo Find(this ITenantStore tenantStore, Guid id) + public static TenantConfiguration Find(this ITenantStore tenantStore, Guid id) { return AsyncHelper.RunSync(() => tenantStore.FindAsync(id)); } diff --git a/framework/test/Volo.Abp.AspNetCore.MultiTenancy.Tests/Volo/Abp/AspNetCore/MultiTenancy/AspNetCoreMultiTenancy_Tests.cs b/framework/test/Volo.Abp.AspNetCore.MultiTenancy.Tests/Volo/Abp/AspNetCore/MultiTenancy/AspNetCoreMultiTenancy_Tests.cs index 1d864e9035..9dd846ddc8 100644 --- a/framework/test/Volo.Abp.AspNetCore.MultiTenancy.Tests/Volo/Abp/AspNetCore/MultiTenancy/AspNetCoreMultiTenancy_Tests.cs +++ b/framework/test/Volo.Abp.AspNetCore.MultiTenancy.Tests/Volo/Abp/AspNetCore/MultiTenancy/AspNetCoreMultiTenancy_Tests.cs @@ -32,7 +32,7 @@ namespace Volo.Abp.AspNetCore.MultiTenancy { options.Tenants = new[] { - new TenantInfo(_testTenantId, _testTenantName) + new TenantConfiguration(_testTenantId, _testTenantName) }; }); }); diff --git a/framework/test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/Data/MultiTenancy/MultiTenantConnectionStringResolver_Tests.cs b/framework/test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/Data/MultiTenancy/MultiTenantConnectionStringResolver_Tests.cs index 18e380655d..20f926f212 100644 --- a/framework/test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/Data/MultiTenancy/MultiTenantConnectionStringResolver_Tests.cs +++ b/framework/test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/Data/MultiTenancy/MultiTenantConnectionStringResolver_Tests.cs @@ -35,7 +35,7 @@ namespace Volo.Abp.Data.MultiTenancy { options.Tenants = new[] { - new TenantInfo(_tenant1Id, "tenant1") + new TenantConfiguration(_tenant1Id, "tenant1") { ConnectionStrings = { @@ -43,7 +43,7 @@ namespace Volo.Abp.Data.MultiTenancy {"db1", "tenant1-db1-value"} } }, - new TenantInfo(_tenant2Id, "tenant2") + new TenantConfiguration(_tenant2Id, "tenant2") }; }); } diff --git a/framework/test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/MultiTenancy/CurrentTenant_Tests.cs b/framework/test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/MultiTenancy/CurrentTenant_Tests.cs index 83c33ff576..4bd1c6bad3 100644 --- a/framework/test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/MultiTenancy/CurrentTenant_Tests.cs +++ b/framework/test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/MultiTenancy/CurrentTenant_Tests.cs @@ -32,8 +32,8 @@ namespace Volo.Abp.MultiTenancy { options.Tenants = new[] { - new TenantInfo(_tenantAId, "A"), - new TenantInfo(_tenantAId, "B") + new TenantConfiguration(_tenantAId, "A"), + new TenantConfiguration(_tenantAId, "B") }; }); }