Introduce AspNetCoreMultiTenancyOptions.

pull/81/head
Halil İbrahim Kalkan 9 years ago
parent 87ac81b3a3
commit 8972ba8f69

@ -1,8 +0,0 @@
namespace Volo.Abp.AspNetCore.MultiTenancy
{
public static class AbpAspNetCoreMultiTenancyConsts
{
//TODO: Get from an option instead of a constant!
public const string TenantIdKey = "__tenantId";
}
}

@ -0,0 +1,15 @@
namespace Volo.Abp.AspNetCore.MultiTenancy
{
public class AspNetCoreMultiTenancyOptions
{
/// <summary>
/// Default: "__tenantId".
/// </summary>
public string TenantIdKey { get; set; }
public AspNetCoreMultiTenancyOptions()
{
TenantIdKey = "__tenantId";
}
}
}

@ -6,7 +6,7 @@ namespace Volo.Abp.AspNetCore.MultiTenancy
{
protected override string GetTenantIdFromHttpContextOrNull(HttpContext httpContext)
{
return httpContext.Request.Cookies[AbpAspNetCoreMultiTenancyConsts.TenantIdKey];
return httpContext.Request.Cookies[Options.TenantIdKey];
}
}
}

@ -7,7 +7,7 @@ namespace Volo.Abp.AspNetCore.MultiTenancy
protected override string GetTenantIdFromHttpContextOrNull(HttpContext httpContext)
{
//TODO: Get first one if provided multiple values and write a log
return httpContext.Request.Headers[AbpAspNetCoreMultiTenancyConsts.TenantIdKey];
return httpContext.Request.Headers[Options.TenantIdKey];
}
}
}

@ -1,4 +1,6 @@
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Volo.Abp.MultiTenancy;
using Volo.ExtensionMethods;
@ -6,14 +8,23 @@ namespace Volo.Abp.AspNetCore.MultiTenancy
{
public abstract class HttpTenantResolverBase : ITenantResolver
{
protected AspNetCoreMultiTenancyOptions Options { get; private set; }
public virtual void Resolve(ITenantResolveContext context)
{
Options = context.ServiceProvider.GetRequiredService<IOptions<AspNetCoreMultiTenancyOptions>>().Value;
var httpContext = context.GetHttpContext();
if (httpContext == null)
{
return;
}
ResolveFromHttpContext(context, httpContext);
}
private void ResolveFromHttpContext(ITenantResolveContext context, HttpContext httpContext)
{
var tenantId = GetTenantIdFromHttpContextOrNull(httpContext);
if (!tenantId.IsNullOrEmpty())
{

@ -11,7 +11,7 @@ namespace Volo.Abp.AspNetCore.MultiTenancy
return null;
}
return httpContext.Request.Query[AbpAspNetCoreMultiTenancyConsts.TenantIdKey];
return httpContext.Request.Query[Options.TenantIdKey];
}
}
}

@ -8,7 +8,7 @@ namespace Volo.Abp.AspNetCore.MultiTenancy
{
protected override string GetTenantIdFromHttpContextOrNull(HttpContext httpContext)
{
var tenantId = httpContext.GetRouteValue(AbpAspNetCoreMultiTenancyConsts.TenantIdKey);
var tenantId = httpContext.GetRouteValue(Options.TenantIdKey);
if (tenantId == null)
{
return null;

@ -1,5 +1,7 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Microsoft.Net.Http.Headers;
using Shouldly;
using Volo.Abp.AspNetCore.App;
@ -9,6 +11,13 @@ namespace Volo.Abp.AspNetCore.MultiTenancy
{
public class AspNetCoreMultiTenancy_Tests : AppTestBase
{
private readonly AspNetCoreMultiTenancyOptions _options;
public AspNetCoreMultiTenancy_Tests()
{
_options = ServiceProvider.GetRequiredService<IOptions<AspNetCoreMultiTenancyOptions>>().Value;
}
[Fact]
public async Task Should_Use_Host_If_Tenant_Is_Not_Specified()
{
@ -21,7 +30,7 @@ namespace Volo.Abp.AspNetCore.MultiTenancy
{
const string testTenantId = "42";
var result = await GetResponseAsObjectAsync<Dictionary<string, string>>($"http://abp.io?{AbpAspNetCoreMultiTenancyConsts.TenantIdKey}={testTenantId}");
var result = await GetResponseAsObjectAsync<Dictionary<string, string>>($"http://abp.io?{_options.TenantIdKey}={testTenantId}");
result["TenantId"].ShouldBe(testTenantId);
}
@ -30,7 +39,7 @@ namespace Volo.Abp.AspNetCore.MultiTenancy
{
const string testTenantId = "42";
Client.DefaultRequestHeaders.Add(AbpAspNetCoreMultiTenancyConsts.TenantIdKey, testTenantId);
Client.DefaultRequestHeaders.Add(_options.TenantIdKey, testTenantId);
var result = await GetResponseAsObjectAsync<Dictionary<string, string>>("http://abp.io");
result["TenantId"].ShouldBe(testTenantId);
@ -41,7 +50,7 @@ namespace Volo.Abp.AspNetCore.MultiTenancy
{
const string testTenantId = "42";
Client.DefaultRequestHeaders.Add("Cookie", new CookieHeaderValue(AbpAspNetCoreMultiTenancyConsts.TenantIdKey, testTenantId).ToString());
Client.DefaultRequestHeaders.Add("Cookie", new CookieHeaderValue(_options.TenantIdKey, testTenantId).ToString());
var result = await GetResponseAsObjectAsync<Dictionary<string, string>>("http://abp.io");
result["TenantId"].ShouldBe(testTenantId);

Loading…
Cancel
Save