using Abp.Dependency; using Abp.Domain.Repositories; using Abp.Domain.Uow; using Abp.Events.Bus.Entities; using Abp.Events.Bus.Handlers; using VberZero.BaseSystem.Users; namespace VberZero.Authorization.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; } public virtual void HandleEvent(EntityDeletedEventData eventData) { _unitOfWorkManager.WithUnitOfWork(() => { using (_unitOfWorkManager.Current.SetTenantId(eventData.Entity.TenantId)) { _userRoleRepository.Delete( ur => ur.UserId == eventData.Entity.Id ); } }); } }