using Abp.Dependency; using Abp.Domain.Repositories; using Abp.Domain.Uow; using Abp.Events.Bus.Entities; using Abp.Events.Bus.Handlers; namespace IwbZero.Authorization.Base.Users { /// /// Removes the user from all user roles when a user is deleted. /// public class UserRoleRemover : IEventHandler>, ITransientDependency { private readonly IRepository _userRoleRepository; private readonly IUnitOfWorkManager _unitOfWorkManager; public UserRoleRemover( IUnitOfWorkManager unitOfWorkManager, IRepository userRoleRepository) { _unitOfWorkManager = unitOfWorkManager; _userRoleRepository = userRoleRepository; } [UnitOfWork] public virtual void HandleEvent(EntityDeletedEventData eventData) { using (_unitOfWorkManager.Current.SetTenantId(eventData.Entity.TenantId)) { _userRoleRepository.Delete( ur => ur.UserId == eventData.Entity.Id ); } } } }