asynchroner tenant
This commit is contained in:
@@ -37,7 +37,7 @@ public class TenantProvider : ITenantProvider
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Resolve and cache in HttpContext.Items
|
// Resolve and cache in HttpContext.Items
|
||||||
ResolveTenantAsync().GetAwaiter().GetResult();
|
ResolveTenant();
|
||||||
|
|
||||||
if (httpContext.Items.TryGetValue("TenantId", out cachedId))
|
if (httpContext.Items.TryGetValue("TenantId", out cachedId))
|
||||||
{
|
{
|
||||||
@@ -48,27 +48,27 @@ public class TenantProvider : ITenantProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<Tenant?> GetCurrentTenantAsync()
|
public Task<Tenant?> GetCurrentTenantAsync()
|
||||||
{
|
{
|
||||||
var httpContext = _httpContextAccessor.HttpContext;
|
var httpContext = _httpContextAccessor.HttpContext;
|
||||||
if (httpContext == null) return null;
|
if (httpContext == null) return Task.FromResult<Tenant?>(null);
|
||||||
|
|
||||||
if (httpContext.Items.TryGetValue("CurrentTenant", out var cachedTenant))
|
if (httpContext.Items.TryGetValue("CurrentTenant", out var cachedTenant))
|
||||||
{
|
{
|
||||||
return (Tenant?)cachedTenant;
|
return Task.FromResult((Tenant?)cachedTenant);
|
||||||
}
|
}
|
||||||
|
|
||||||
await ResolveTenantAsync();
|
ResolveTenant();
|
||||||
|
|
||||||
if (httpContext.Items.TryGetValue("CurrentTenant", out cachedTenant))
|
if (httpContext.Items.TryGetValue("CurrentTenant", out cachedTenant))
|
||||||
{
|
{
|
||||||
return (Tenant?)cachedTenant;
|
return Task.FromResult((Tenant?)cachedTenant);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return Task.FromResult<Tenant?>(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task ResolveTenantAsync()
|
private void ResolveTenant()
|
||||||
{
|
{
|
||||||
var httpContext = _httpContextAccessor.HttpContext;
|
var httpContext = _httpContextAccessor.HttpContext;
|
||||||
if (httpContext == null) return;
|
if (httpContext == null) return;
|
||||||
@@ -82,9 +82,9 @@ public class TenantProvider : ITenantProvider
|
|||||||
|
|
||||||
if (!string.IsNullOrEmpty(subdomain))
|
if (!string.IsNullOrEmpty(subdomain))
|
||||||
{
|
{
|
||||||
await using var db = await _dbContextFactory.CreateDbContextAsync();
|
using var db = _dbContextFactory.CreateDbContext();
|
||||||
var tenant = await db.Tenants
|
var tenant = db.Tenants
|
||||||
.FirstOrDefaultAsync(t => t.Subdomain.ToLower() == subdomain.ToLower());
|
.FirstOrDefault(t => t.Subdomain.ToLower() == subdomain.ToLower());
|
||||||
|
|
||||||
if (tenant != null)
|
if (tenant != null)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user