using System.Security.Claims; using Microsoft.AspNetCore.Http; namespace line_gestao_api.Services; public class TenantProvider : ITenantProvider { private readonly IHttpContextAccessor _httpContextAccessor; private static readonly AsyncLocal CurrentTenant = new(); public TenantProvider(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } public Guid? TenantId => CurrentTenant.Value ?? ResolveFromClaims(); public void SetTenantId(Guid? tenantId) { CurrentTenant.Value = tenantId; } private Guid? ResolveFromClaims() { var claim = _httpContextAccessor.HttpContext?.User?.FindFirst("tenantId")?.Value ?? _httpContextAccessor.HttpContext?.User?.FindFirst("tenant")?.Value; return Guid.TryParse(claim, out var tenantId) ? tenantId : null; } }