using System.Security.Claims; using TaskTrackingSystem.Shared.Models.Menu; namespace TaskTrackingSystem.WebApp; public class UserSessionState { public string? Token { get; set; } public ClaimsPrincipal? CachedUser { get; set; } public string? CachedAccessRoleId { get; set; } public List? CachedAccessItems { get; set; } public HashSet? CachedAccessCodes { get; set; } /// /// The server-side permissions version (latest role access timestamp) when the access items were last fetched. /// Used to detect when an admin has changed a role's permissions so the cache can be busted. /// public string? CachedAccessVersion { get; set; } public void ClearAccessCache() { CachedAccessRoleId = null; CachedAccessItems = null; CachedAccessCodes = null; CachedAccessVersion = null; } public void ClearSession() { Token = null; CachedUser = null; ClearAccessCache(); } }