using Abp.Dependency; using Abp.Events.Bus.Entities; using Abp.Events.Bus.Handlers; using Abp.Runtime.Caching; using IwbZero.Authorization.Base.Permissions; using IwbZero.Runtime.Caching; namespace IwbZero.Authorization.Base.Users { public class UserPermissionCacheItemInvalidator : IEventHandler>, IEventHandler>, IEventHandler>, ITransientDependency { private readonly ICacheManager _cacheManager; public UserPermissionCacheItemInvalidator(ICacheManager cacheManager) { _cacheManager = cacheManager; } public void HandleEvent(EntityChangedEventData eventData) { var cacheKey = eventData.Entity.MasterValue + "@" + (eventData.Entity.TenantId ?? 0); _cacheManager.GetUserPermissionCache().Remove(cacheKey); } public void HandleEvent(EntityChangedEventData eventData) { var cacheKey = eventData.Entity.UserId + "@" + (eventData.Entity.TenantId ?? 0); _cacheManager.GetUserPermissionCache().Remove(cacheKey); } public void HandleEvent(EntityDeletedEventData eventData) { var cacheKey = eventData.Entity.Id + "@" + (eventData.Entity.TenantId ?? 0); _cacheManager.GetUserPermissionCache().Remove(cacheKey); } } }