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; } }