UserRoleRemover.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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. using VberZero.BaseSystem.Users;
  7. namespace VberZero.Authorization.Users;
  8. /// <summary>
  9. /// Removes the user from all user roles when a user is deleted.
  10. /// </summary>
  11. public class UserRoleRemover :
  12. IEventHandler<EntityDeletedEventData<User>>,
  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. public virtual void HandleEvent(EntityDeletedEventData<User> eventData)
  25. {
  26. _unitOfWorkManager.WithUnitOfWork(() =>
  27. {
  28. using (_unitOfWorkManager.Current.SetTenantId(eventData.Entity.TenantId))
  29. {
  30. _userRoleRepository.Delete(
  31. ur => ur.UserId == eventData.Entity.Id
  32. );
  33. }
  34. });
  35. }
  36. }