using System.Collections.Generic; using Tanshu.Accounts.Entities.Auth; using System.Linq; using Tanshu.Accounts.Repository; namespace Tanshu.Accounts.Contracts { public static class Session { private static Dictionary _roles; private static User _currentUser; public static bool IsAuthenticated { get; private set; } public static User User { get { return _currentUser; } set { if (value != null) { _currentUser = value; IsAuthenticated = true; } else { _currentUser = null; IsAuthenticated = false; _roles = null; Cache.ClearRoles(); } } } public static bool IsAllowed(string role) { if (_currentUser == null) return false; if (_roles == null) _roles = new Dictionary(); if (!_roles.ContainsKey(role)) _roles.Add(role, Cache.UserRoles(_currentUser.UserID).Any(x => x.Name == role)); return _roles[role]; } } }