Browse Source

Implement resource permission deletion in Role and User event handlers

pull/24374/head
maliming 3 months ago
parent
commit
efaeebf98a
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 6
      modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RoleDeletedEventHandler.cs
  2. 6
      modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/UserDeletedEventHandler.cs
  3. 5
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/IResourcePermissionManager.cs
  4. 13
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/ResourcePermissionManager.cs

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

@ -1,5 +1,6 @@
using System.Threading.Tasks;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Authorization.Permissions.Resources;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Domain.Entities.Events.Distributed;
using Volo.Abp.EventBus;
@ -14,15 +15,18 @@ public class RoleDeletedEventHandler :
ITransientDependency
{
protected IPermissionManager PermissionManager { get; }
protected IResourcePermissionManager ResourcePermissionManager { get; }
public RoleDeletedEventHandler(IPermissionManager permissionManager)
public RoleDeletedEventHandler(IPermissionManager permissionManager, IResourcePermissionManager resourcePermissionManager)
{
PermissionManager = permissionManager;
ResourcePermissionManager = resourcePermissionManager;
}
[UnitOfWork]
public virtual async Task HandleEventAsync(EntityDeletedEto<IdentityRoleEto> eventData)
{
await PermissionManager.DeleteAsync(RolePermissionValueProvider.ProviderName, eventData.Entity.Name);
await ResourcePermissionManager.DeleteAsync(RoleResourcePermissionValueProvider.ProviderName, eventData.Entity.Name);
}
}

6
modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/UserDeletedEventHandler.cs

@ -1,5 +1,6 @@
using System.Threading.Tasks;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Authorization.Permissions.Resources;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Domain.Entities.Events.Distributed;
using Volo.Abp.EventBus.Distributed;
@ -13,15 +14,18 @@ public class UserDeletedEventHandler :
ITransientDependency
{
protected IPermissionManager PermissionManager { get; }
protected IResourcePermissionManager ResourcePermissionManager { get; }
public UserDeletedEventHandler(IPermissionManager permissionManager)
public UserDeletedEventHandler(IPermissionManager permissionManager, IResourcePermissionManager resourcePermissionManager)
{
PermissionManager = permissionManager;
ResourcePermissionManager = resourcePermissionManager;
}
[UnitOfWork]
public virtual async Task HandleEventAsync(EntityDeletedEto<UserEto> eventData)
{
await PermissionManager.DeleteAsync(UserPermissionValueProvider.ProviderName, eventData.Entity.Id.ToString());
await ResourcePermissionManager.DeleteAsync(UserResourcePermissionValueProvider.ProviderName, eventData.Entity.Id.ToString());
}
}

5
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/IResourcePermissionManager.cs

@ -65,4 +65,9 @@ public interface IResourcePermissionManager
string providerName,
string providerKey
);
Task DeleteAsync(
string providerName,
string providerKey
);
}

13
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/ResourcePermissionManager.cs

@ -323,9 +323,18 @@ public class ResourcePermissionManager : IResourcePermissionManager, ISingletonD
return await ResourcePermissionGrantRepository.UpdateAsync(resourcePermissionGrant, true);
}
public virtual async Task DeleteAsync(string providerName, string resourceName, string resourceKey, string providerKey)
public virtual async Task DeleteAsync(string resourceName, string resourceKey, string providerName, string providerKey)
{
var permissionGrants = await ResourcePermissionGrantRepository.GetListAsync(providerName, resourceName, resourceKey, providerKey);
var permissionGrants = await ResourcePermissionGrantRepository.GetListAsync(resourceName, resourceKey, providerName, providerKey);
foreach (var permissionGrant in permissionGrants)
{
await ResourcePermissionGrantRepository.DeleteAsync(permissionGrant, true);
}
}
public virtual async Task DeleteAsync(string providerName, string providerKey)
{
var permissionGrants = await ResourcePermissionGrantRepository.GetListAsync(providerName, providerKey);
foreach (var permissionGrant in permissionGrants)
{
await ResourcePermissionGrantRepository.DeleteAsync(permissionGrant, true);

Loading…
Cancel
Save