Remove permission Grants when role is delete

pull/6919/head
liangshiwei 5 years ago
parent 3e71fc31ad
commit 912a247026

@ -0,0 +1,26 @@
using System.Threading.Tasks;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Domain.Entities.Events;
using Volo.Abp.EventBus;
using Volo.Abp.Identity;
namespace Volo.Abp.PermissionManagement.Identity
{
public class RoleDeletedEventHandler :
ILocalEventHandler<EntityDeletedEventData<IdentityRole>>,
ITransientDependency
{
protected IPermissionManager PermissionManager { get; }
public RoleDeletedEventHandler(IPermissionManager permissionManager)
{
PermissionManager = permissionManager;
}
public virtual async Task HandleEventAsync(EntityDeletedEventData<IdentityRole> eventData)
{
await PermissionManager.DeleteAsync(RolePermissionValueProvider.ProviderName, eventData.Entity.Name);
}
}
}

@ -15,5 +15,7 @@ namespace Volo.Abp.PermissionManagement
Task SetAsync(string permissionName, string providerName, string providerKey, bool isGranted);
Task<PermissionGrant> UpdateProviderKeyAsync(PermissionGrant permissionGrant, string providerKey);
Task DeleteAsync(string providerName, string providerKey);
}
}
}

@ -111,6 +111,16 @@ namespace Volo.Abp.PermissionManagement
return await PermissionGrantRepository.UpdateAsync(permissionGrant);
}
public virtual async Task DeleteAsync(string providerName, string providerKey)
{
var permissionGrants = await PermissionGrantRepository.GetListAsync(providerName, providerKey);
//TODO: Use DeleteManyAsync method
foreach (var permissionGrant in permissionGrants)
{
await PermissionGrantRepository.DeleteAsync(permissionGrant);
}
}
protected virtual async Task<PermissionWithGrantedProviders> GetInternalAsync(PermissionDefinition permission, string providerName, string providerKey)
{
var result = new PermissionWithGrantedProviders(permission.Name, false);
@ -143,4 +153,4 @@ namespace Volo.Abp.PermissionManagement
return result;
}
}
}
}

Loading…
Cancel
Save