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
);
}
});
}
}