| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- using Abp.Dependency;
- using Abp.Domain.Repositories;
- using Abp.Domain.Uow;
- using Abp.Events.Bus.Entities;
- using Abp.Events.Bus.Handlers;
- using Abp.Runtime.Caching;
- using VberZero.BaseSystem.Organizations;
- using VberZero.BaseSystem.Users;
- using VberZero.Caching;
- namespace VberZero.Authorization.Users;
- public class VzUserPermissionCacheItemInvalidator :
- IEventHandler<EntityChangedEventData<UserPermissionSetting>>,
- IEventHandler<EntityChangedEventData<UserRole>>,
- IEventHandler<EntityChangedEventData<UserOrganizationUnit>>,
- IEventHandler<EntityDeletedEventData<User>>,
- IEventHandler<EntityChangedEventData<OrganizationUnitRole>>,
- ITransientDependency
- {
- private readonly ICacheManager _cacheManager;
- private readonly IRepository<UserOrganizationUnit, long> _userOrganizationUnitRepository;
- private readonly IUnitOfWorkManager _unitOfWorkManager;
- public VzUserPermissionCacheItemInvalidator(
- ICacheManager cacheManager,
- IRepository<UserOrganizationUnit, long> userOrganizationUnitRepository,
- IUnitOfWorkManager unitOfWorkManager)
- {
- _cacheManager = cacheManager;
- _userOrganizationUnitRepository = userOrganizationUnitRepository;
- _unitOfWorkManager = unitOfWorkManager;
- }
- public void HandleEvent(EntityChangedEventData<UserPermissionSetting> eventData)
- {
- var cacheKey = eventData.Entity.UserId + "@" + (eventData.Entity.TenantId ?? 0);
- _cacheManager.GetUserPermissionCache().Remove(cacheKey);
- }
- public void HandleEvent(EntityChangedEventData<UserRole> eventData)
- {
- var cacheKey = eventData.Entity.UserId + "@" + (eventData.Entity.TenantId ?? 0);
- _cacheManager.GetUserPermissionCache().Remove(cacheKey);
- }
- public void HandleEvent(EntityChangedEventData<UserOrganizationUnit> eventData)
- {
- var cacheKey = eventData.Entity.UserId + "@" + (eventData.Entity.TenantId ?? 0);
- _cacheManager.GetUserPermissionCache().Remove(cacheKey);
- }
- public void HandleEvent(EntityDeletedEventData<User> eventData)
- {
- var cacheKey = eventData.Entity.Id + "@" + (eventData.Entity.TenantId ?? 0);
- _cacheManager.GetUserPermissionCache().Remove(cacheKey);
- }
- public virtual void HandleEvent(EntityChangedEventData<OrganizationUnitRole> eventData)
- {
- _unitOfWorkManager.WithUnitOfWork(() =>
- {
- using (_unitOfWorkManager.Current.SetTenantId(eventData.Entity.TenantId))
- {
- var users = _userOrganizationUnitRepository.GetAllList(userOu =>
- userOu.OrganizationUnitId == eventData.Entity.OrganizationUnitId
- );
- foreach (var userOrganizationUnit in users)
- {
- var cacheKey = userOrganizationUnit.UserId + "@" + (eventData.Entity.TenantId ?? 0);
- _cacheManager.GetUserPermissionCache().Remove(cacheKey);
- }
- }
- });
- }
- }
|