using Meezi.Core.Authorization; using Meezi.Core.Enums; namespace Meezi.Core.Interfaces; public interface ITenantContext { string? UserId { get; } string? CafeId { get; } EmployeeRole? Role { get; } PlanTier? PlanTier { get; } string? Language { get; } /// Active branch from JWT when employee is branch-scoped. string? BranchId { get; } bool IsSystemAdmin { get; } bool IsAuthenticated { get; } bool IsCafeOwner => Role == EmployeeRole.Owner; /// /// When non-null the employee has a custom role. These permissions override the static /// matrix; the base still governs /// café-wide vs. branch-scoped behaviour. /// IReadOnlySet? CustomPermissions { get; } }