Browse Source

Merge pull request #6919 from abpframework/liangshiwei/identity-patch-1

Remove permission Grants when role is deleted
pull/6976/head
Halil İbrahim Kalkan 6 years ago
committed by GitHub
parent
commit
8c4fde715f
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 26
      modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RoleDeletedEventHandler.cs
  2. 4
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/IPermissionManager.cs
  3. 12
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManager.cs

26
modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RoleDeletedEventHandler.cs

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

4
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/IPermissionManager.cs

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

12
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManager.cs

@ -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