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.Roles { public class RolePermissionCacheItemInvalidator : IEventHandler>, IEventHandler>, ITransientDependency { private readonly ICacheManager _cacheManager; public RolePermissionCacheItemInvalidator(ICacheManager cacheManager) { _cacheManager = cacheManager; } public void HandleEvent(EntityChangedEventData eventData) { var cacheKey = eventData.Entity.MasterValue + "@" + (eventData.Entity.TenantId ?? 0); _cacheManager.GetRolePermissionCache().Remove(cacheKey); } public void HandleEvent(EntityDeletedEventData eventData) { var cacheKey = eventData.Entity.Id + "@" + (eventData.Entity.TenantId ?? 0); _cacheManager.GetRolePermissionCache().Remove(cacheKey); } } }