using System.Security.Claims; using foodmarket.Application.Common.Tenancy; namespace foodmarket.Api.Infrastructure.Tenancy; public class HttpContextTenantContext : ITenantContext { public const string OrganizationClaim = "org_id"; public const string SuperAdminRole = "SuperAdmin"; private readonly IHttpContextAccessor _accessor; public HttpContextTenantContext(IHttpContextAccessor accessor) { _accessor = accessor; } public bool IsAuthenticated => _accessor.HttpContext?.User?.Identity?.IsAuthenticated ?? false; public bool IsSuperAdmin => _accessor.HttpContext?.User?.IsInRole(SuperAdminRole) ?? false; public Guid? OrganizationId { get { var claim = _accessor.HttpContext?.User?.FindFirst(OrganizationClaim)?.Value; return Guid.TryParse(claim, out var id) ? id : null; } } }