RolePermissionCacheItemInvalidator.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using Abp.Dependency;
  2. using Abp.Events.Bus.Entities;
  3. using Abp.Events.Bus.Handlers;
  4. using Abp.Runtime.Caching;
  5. using IwbZero.Authorization.Base.Permissions;
  6. using IwbZero.Runtime.Caching;
  7. namespace IwbZero.Authorization.Base.Roles
  8. {
  9. public class RolePermissionCacheItemInvalidator :
  10. IEventHandler<EntityChangedEventData<PermissionSetting>>,
  11. IEventHandler<EntityDeletedEventData<RoleBase>>,
  12. ITransientDependency
  13. {
  14. private readonly ICacheManager _cacheManager;
  15. public RolePermissionCacheItemInvalidator(ICacheManager cacheManager)
  16. {
  17. _cacheManager = cacheManager;
  18. }
  19. public void HandleEvent(EntityChangedEventData<PermissionSetting> eventData)
  20. {
  21. var cacheKey = eventData.Entity.MasterValue + "@" + (eventData.Entity.TenantId ?? 0);
  22. _cacheManager.GetRolePermissionCache().Remove(cacheKey);
  23. }
  24. public void HandleEvent(EntityDeletedEventData<RoleBase> eventData)
  25. {
  26. var cacheKey = eventData.Entity.Id + "@" + (eventData.Entity.TenantId ?? 0);
  27. _cacheManager.GetRolePermissionCache().Remove(cacheKey);
  28. }
  29. }
  30. }