29 lines
1003 B
C#
29 lines
1003 B
C#
using PostFundManagement.Domain.Abstractions;
|
|
|
|
namespace PostFundManagement.Infrastructure.Database.Services;
|
|
|
|
public sealed class TenantContextService : ITenantContextService
|
|
{
|
|
public string? TenantName { get; }
|
|
|
|
public long TenantId { get; }
|
|
|
|
public bool IsAdmin { get; }
|
|
|
|
public bool HasTenantFilter { get; }
|
|
|
|
public TenantContextService(IHttpContextAccessor httpContextAccessor)
|
|
{
|
|
var user = httpContextAccessor.HttpContext?.User;
|
|
|
|
IsAdmin = user?.IsInRole("Admin") == true || user?.HasClaim("role", "Admin") == true;
|
|
|
|
HasTenantFilter = !IsAdmin;
|
|
|
|
var tenantIdClaimVal = user?.FindFirst("tenant_id")?.Value ?? user?.FindFirst("TenantId")?.Value;
|
|
TenantId = long.TryParse(tenantIdClaimVal, out var id) ? id : 0L;
|
|
|
|
var tenantNameClaimVal = user?.FindFirst("tenant")?.Value ?? user?.FindFirst("Tenant")?.Value;
|
|
TenantName = !string.IsNullOrWhiteSpace(tenantNameClaimVal) ? tenantNameClaimVal : null;
|
|
}
|
|
} |