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 8e17228846..178ae1f94c 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 @@ -27,15 +27,9 @@ namespace Volo.Abp.PermissionManagement public virtual async Task CheckAsync(string name, string providerName, string providerKey) { - if (providerName != Name) - { - return PermissionValueProviderGrantInfo.NonGranted; - } + var multiplePermissionValueProviderGrantInfo = await CheckAsync(new[] {name}, providerName, providerKey); - return new PermissionValueProviderGrantInfo( - await PermissionGrantRepository.FindAsync(name, providerName, providerKey) != null, - providerKey - ); + return multiplePermissionValueProviderGrantInfo.Result.First().Value; } public virtual async Task CheckAsync(string[] names, string providerName, string providerKey) diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionManager_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionManager_Tests.cs index 07d279ec9d..1a4ea721cc 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionManager_Tests.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionManager_Tests.cs @@ -40,6 +40,37 @@ namespace Volo.Abp.PermissionManagement grantedProviders.Providers.ShouldContain(x => x.Key == "Test"); } + [Fact] + public async Task Multiple_GetAsync() + { + await _permissionGrantRepository.InsertAsync(new PermissionGrant( + Guid.NewGuid(), + "MyPermission1", + "Test", + "Test") + ); + await _permissionGrantRepository.InsertAsync(new PermissionGrant( + Guid.NewGuid(), + "MyPermission2", + "Test", + "Test") + ); + + var grantedProviders = await _permissionManager.GetAsync( + new[] {"MyPermission1", "MyPermission2"}, + "Test", + "Test"); + + grantedProviders.Result.Count.ShouldBe(2); + grantedProviders.Result.First().IsGranted.ShouldBeTrue(); + grantedProviders.Result.First().Name.ShouldBe("MyPermission1"); + grantedProviders.Result.First().Providers.ShouldContain(x => x.Key == "Test"); + + grantedProviders.Result.Last().IsGranted.ShouldBeTrue(); + grantedProviders.Result.Last().Name.ShouldBe("MyPermission2"); + grantedProviders.Result.Last().Providers.ShouldContain(x => x.Key == "Test"); + } + [Fact] public async Task Get_Should_Exception_When_Permission_Undefined() {