UserRoleRemover.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using Abp.Dependency;
  2. using Abp.Domain.Repositories;
  3. using Abp.Domain.Uow;
  4. using Abp.Events.Bus.Entities;
  5. using Abp.Events.Bus.Handlers;
  6. namespace IwbZero.Authorization.Base.Users
  7. {
  8. /// <summary>
  9. /// Removes the user from all user roles when a user is deleted.
  10. /// </summary>
  11. public class UserRoleRemover :
  12. IEventHandler<EntityDeletedEventData<UserBase>>,
  13. ITransientDependency
  14. {
  15. private readonly IRepository<UserRole, long> _userRoleRepository;
  16. private readonly IUnitOfWorkManager _unitOfWorkManager;
  17. public UserRoleRemover(
  18. IUnitOfWorkManager unitOfWorkManager,
  19. IRepository<UserRole, long> userRoleRepository)
  20. {
  21. _unitOfWorkManager = unitOfWorkManager;
  22. _userRoleRepository = userRoleRepository;
  23. }
  24. [UnitOfWork]
  25. public virtual void HandleEvent(EntityDeletedEventData<UserBase> eventData)
  26. {
  27. using (_unitOfWorkManager.Current.SetTenantId(eventData.Entity.TenantId))
  28. {
  29. _userRoleRepository.Delete(
  30. ur => ur.UserId == eventData.Entity.Id
  31. );
  32. }
  33. }
  34. }
  35. }