From 5e6703dca8379e9d0b4f9ae5255c083af7b1e2a3 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 4 Dec 2020 14:53:19 +0800 Subject: [PATCH 1/2] Use IPermissionStore in PermissionManagementProvider Resolve #6373 --- .../Identity/RolePermissionManagementProvider.cs | 4 +++- .../Identity/UserPermissionManagementProvider.cs | 8 +++++--- .../PermissionManagementProvider.cs | 11 ++++++++--- .../TestPermissionManagementProvider.cs | 6 +++--- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RolePermissionManagementProvider.cs b/modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RolePermissionManagementProvider.cs index 53ebe46fb2..26125aedbf 100644 --- a/modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RolePermissionManagementProvider.cs +++ b/modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RolePermissionManagementProvider.cs @@ -15,11 +15,13 @@ namespace Volo.Abp.PermissionManagement.Identity public RolePermissionManagementProvider( IPermissionGrantRepository permissionGrantRepository, + IPermissionStore permissionStore, IGuidGenerator guidGenerator, ICurrentTenant currentTenant, IUserRoleFinder userRoleFinder) : base( permissionGrantRepository, + permissionStore, guidGenerator, currentTenant) { @@ -31,7 +33,7 @@ namespace Volo.Abp.PermissionManagement.Identity if (providerName == Name) { return new PermissionValueProviderGrantInfo( - await PermissionGrantRepository.FindAsync(name, providerName, providerKey) != null, + await PermissionStore.IsGrantedAsync(name, providerName, providerKey), providerKey ); } diff --git a/modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/UserPermissionManagementProvider.cs b/modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/UserPermissionManagementProvider.cs index db9a0cbadd..e1056849da 100644 --- a/modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/UserPermissionManagementProvider.cs +++ b/modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/UserPermissionManagementProvider.cs @@ -9,15 +9,17 @@ namespace Volo.Abp.PermissionManagement.Identity public override string Name => UserPermissionValueProvider.ProviderName; public UserPermissionManagementProvider( - IPermissionGrantRepository permissionGrantRepository, + IPermissionGrantRepository permissionGrantRepository, + IPermissionStore permissionStore, IGuidGenerator guidGenerator, - ICurrentTenant currentTenant) + ICurrentTenant currentTenant) : base( permissionGrantRepository, + permissionStore, guidGenerator, currentTenant) { } } -} \ No newline at end of file +} diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManagementProvider.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManagementProvider.cs index 0b83f37fd1..401c86dcd8 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManagementProvider.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManagementProvider.cs @@ -1,4 +1,5 @@ using System.Threading.Tasks; +using Volo.Abp.Authorization.Permissions; using Volo.Abp.Guids; using Volo.Abp.MultiTenancy; @@ -10,20 +11,24 @@ namespace Volo.Abp.PermissionManagement protected IPermissionGrantRepository PermissionGrantRepository { get; } + protected IPermissionStore PermissionStore { get; } + protected IGuidGenerator GuidGenerator { get; } protected ICurrentTenant CurrentTenant { get; } protected PermissionManagementProvider( IPermissionGrantRepository permissionGrantRepository, + IPermissionStore permissionStore, IGuidGenerator guidGenerator, ICurrentTenant currentTenant) { PermissionGrantRepository = permissionGrantRepository; + PermissionStore = permissionStore; GuidGenerator = guidGenerator; CurrentTenant = currentTenant; } - + public virtual async Task CheckAsync(string name, string providerName, string providerKey) { if (providerName != Name) @@ -32,7 +37,7 @@ namespace Volo.Abp.PermissionManagement } return new PermissionValueProviderGrantInfo( - await PermissionGrantRepository.FindAsync(name, providerName, providerKey) != null, + await PermissionStore.IsGrantedAsync(name, providerName, providerKey), providerKey ); } @@ -74,4 +79,4 @@ namespace Volo.Abp.PermissionManagement await PermissionGrantRepository.DeleteAsync(permissionGrant); } } -} \ No newline at end of file +} diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.TestBase/Volo/Abp/PermissionManagement/TestPermissionManagementProvider.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.TestBase/Volo/Abp/PermissionManagement/TestPermissionManagementProvider.cs index f66ed2995d..97bedc33f9 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.TestBase/Volo/Abp/PermissionManagement/TestPermissionManagementProvider.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.TestBase/Volo/Abp/PermissionManagement/TestPermissionManagementProvider.cs @@ -1,6 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; +using Volo.Abp.Authorization.Permissions; using Volo.Abp.Guids; using Volo.Abp.MultiTenancy; @@ -12,10 +10,12 @@ namespace Volo.Abp.PermissionManagement public TestPermissionManagementProvider( IPermissionGrantRepository permissionGrantRepository, + IPermissionStore permissionStore, IGuidGenerator guidGenerator, ICurrentTenant currentTenant) : base( permissionGrantRepository, + permissionStore, guidGenerator, currentTenant) { From 7758d494bd29b9b3e474309184d85109e3f0e642 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 4 Dec 2020 15:04:09 +0800 Subject: [PATCH 2/2] Update ClientPermissionManagementProvider --- .../IdentityServer/Tokens/TokenCleanupBackgroundWorker.cs | 7 +++---- .../IdentityServer/ClientPermissionManagementProvider.cs | 2 ++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Tokens/TokenCleanupBackgroundWorker.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Tokens/TokenCleanupBackgroundWorker.cs index a7ad09d191..66aa42a1df 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Tokens/TokenCleanupBackgroundWorker.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Tokens/TokenCleanupBackgroundWorker.cs @@ -11,11 +11,11 @@ namespace Volo.Abp.IdentityServer.Tokens protected TokenCleanupOptions Options { get; } public TokenCleanupBackgroundWorker( - AbpTimer timer, + AbpTimer timer, IServiceScopeFactory serviceScopeFactory, IOptions options) : base( - timer, + timer, serviceScopeFactory) { Options = options.Value; @@ -27,8 +27,7 @@ namespace Volo.Abp.IdentityServer.Tokens await workerContext .ServiceProvider .GetRequiredService() - .CleanAsync() - ; + .CleanAsync(); } } } diff --git a/modules/identityserver/src/Volo.Abp.PermissionManagement.Domain.IdentityServer/Volo/Abp/PermissionManagement/IdentityServer/ClientPermissionManagementProvider.cs b/modules/identityserver/src/Volo.Abp.PermissionManagement.Domain.IdentityServer/Volo/Abp/PermissionManagement/IdentityServer/ClientPermissionManagementProvider.cs index 15d9952c74..edb5fef112 100644 --- a/modules/identityserver/src/Volo.Abp.PermissionManagement.Domain.IdentityServer/Volo/Abp/PermissionManagement/IdentityServer/ClientPermissionManagementProvider.cs +++ b/modules/identityserver/src/Volo.Abp.PermissionManagement.Domain.IdentityServer/Volo/Abp/PermissionManagement/IdentityServer/ClientPermissionManagementProvider.cs @@ -11,10 +11,12 @@ namespace Volo.Abp.PermissionManagement.IdentityServer public ClientPermissionManagementProvider( IPermissionGrantRepository permissionGrantRepository, + IPermissionStore permissionStore, IGuidGenerator guidGenerator, ICurrentTenant currentTenant) : base( permissionGrantRepository, + permissionStore, guidGenerator, currentTenant) {