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 d1af0a0c90..7b2fb4344e 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 @@ -38,11 +38,11 @@ namespace Volo.Abp.PermissionManagement.Identity public override async Task CheckAsync(string[] names, string providerName, string providerKey) { var multiplePermissionValueProviderGrantInfo = new MultiplePermissionValueProviderGrantInfo(names); - List permissionGrants = null; + var permissionGrants = new List(); if (providerName == Name) { - permissionGrants = await PermissionGrantRepository.GetListAsync(names, providerName, providerKey); + permissionGrants.AddRange(await PermissionGrantRepository.GetListAsync(names, providerName, providerKey)); } @@ -53,11 +53,12 @@ namespace Volo.Abp.PermissionManagement.Identity foreach (var roleName in roleNames) { - permissionGrants = await PermissionGrantRepository.GetListAsync(names, Name, roleName); + permissionGrants.AddRange(await PermissionGrantRepository.GetListAsync(names, Name, roleName)); } } - if (permissionGrants == null) + permissionGrants = permissionGrants.Distinct().ToList(); + if (!permissionGrants.Any()) { return multiplePermissionValueProviderGrantInfo; } diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs index 41b986c2f4..a8575b424b 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs @@ -69,6 +69,11 @@ namespace Volo.Abp.PermissionManagement } } + if (!neededCheckPermissions.Any()) + { + return result; + } + var grantInfoDtos = neededCheckPermissions.Select(x => new PermissionGrantInfoDto { Name = x.Name, 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 178ae1f94c..ccb2cae951 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 @@ -44,10 +44,8 @@ namespace Volo.Abp.PermissionManagement foreach (var permissionName in names) { - if (permissionGrants.Any(x => x.Name == permissionName)) - { - multiplePermissionValueProviderGrantInfo.Result[permissionName] = new PermissionValueProviderGrantInfo(true, providerKey); - } + var isGrant = permissionGrants.Any(x => x.Name == permissionName); + multiplePermissionValueProviderGrantInfo.Result[permissionName] = new PermissionValueProviderGrantInfo(isGrant, providerKey); } return multiplePermissionValueProviderGrantInfo; diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManager.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManager.cs index 2c340c3d7c..7d6193d1ce 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManager.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManager.cs @@ -73,14 +73,12 @@ namespace Volo.Abp.PermissionManagement public virtual async Task> GetAllAsync(string providerName, string providerKey) { - var results = new List(); + var permissionDefinitions = PermissionDefinitionManager.GetPermissions().ToArray(); - foreach (var permissionDefinition in PermissionDefinitionManager.GetPermissions()) - { - results.Add(await GetInternalAsync(permissionDefinition, providerName, providerKey)); - } + var multiplePermissionWithGrantedProviders = await GetInternalAsync(permissionDefinitions, providerName, providerKey); + + return multiplePermissionWithGrantedProviders.Result; - return results; } public virtual async Task SetAsync(string permissionName, string providerName, string providerKey, bool isGranted) @@ -173,6 +171,11 @@ namespace Volo.Abp.PermissionManagement } } + if (!neededCheckPermissions.Any()) + { + return multiplePermissionWithGrantedProviders; + } + foreach (var provider in ManagementProviders) { permissionNames = neededCheckPermissions.Select(x => x.Name).ToArray(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/Permissions/MyProjectNamePermissionDefinitionProvider.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/Permissions/MyProjectNamePermissionDefinitionProvider.cs index 631beb6b6d..011dfc5cbc 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/Permissions/MyProjectNamePermissionDefinitionProvider.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Application.Contracts/Permissions/MyProjectNamePermissionDefinitionProvider.cs @@ -11,7 +11,28 @@ namespace MyCompanyName.MyProjectName.Permissions var myGroup = context.AddGroup(MyProjectNamePermissions.GroupName); //Define your own permissions here. Example: - //myGroup.AddPermission(MyProjectNamePermissions.MyPermission1, L("Permission:MyPermission1")); + myGroup.AddPermission("permission1", L("Permission:MyPermission1")); + myGroup.AddPermission("permission2", L("Permission:MyPermission1")); + myGroup.AddPermission("permission3", L("Permission:MyPermission1")); + myGroup.AddPermission("permission4", L("Permission:MyPermission1")); + myGroup.AddPermission("permission5", L("Permission:MyPermission1")); + myGroup.AddPermission("permission6", L("Permission:MyPermission1")); + myGroup.AddPermission("permission7", L("Permission:MyPermission1")); + myGroup.AddPermission("permission8", L("Permission:MyPermission1")); + myGroup.AddPermission("permission9", L("Permission:MyPermission1")); + myGroup.AddPermission("permission10", L("Permission:MyPermission1")); + myGroup.AddPermission("permission11", L("Permission:MyPermission1")); + myGroup.AddPermission("permission12", L("Permission:MyPermission1")); + myGroup.AddPermission("permission13", L("Permission:MyPermission1")); + myGroup.AddPermission("permission14", L("Permission:MyPermission1")); + myGroup.AddPermission("permission15", L("Permission:MyPermission1")); + myGroup.AddPermission("permission16", L("Permission:MyPermission1")); + myGroup.AddPermission("permission17", L("Permission:MyPermission1")); + myGroup.AddPermission("permission18", L("Permission:MyPermission1")); + myGroup.AddPermission("permission19", L("Permission:MyPermission1")); + myGroup.AddPermission("permission20", L("Permission:MyPermission1")); + myGroup.AddPermission("permission21", L("Permission:MyPermission1")); + myGroup.AddPermission("permission22", L("Permission:MyPermission1")); } private static LocalizableString L(string name)