|
|
|
@ -1,4 +1,4 @@ |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Linq; |
|
|
|
using System.Threading.Tasks; |
|
|
|
using Volo.Abp.Security.Claims; |
|
|
|
@ -39,10 +39,10 @@ namespace Volo.Abp.Authorization.Permissions |
|
|
|
|
|
|
|
public override async Task<MultiplePermissionGrantResult> CheckAsync(PermissionValuesCheckContext context) |
|
|
|
{ |
|
|
|
var permissionNames = context.Permissions.Select(x => x.Name).Distinct().ToArray(); |
|
|
|
var permissionNames = context.Permissions.Select(x => x.Name).Distinct().ToList(); |
|
|
|
Check.NotNullOrEmpty(permissionNames, nameof(permissionNames)); |
|
|
|
|
|
|
|
var result = new MultiplePermissionGrantResult(permissionNames); |
|
|
|
var result = new MultiplePermissionGrantResult(permissionNames.ToArray()); |
|
|
|
|
|
|
|
var roles = context.Principal?.FindAll(AbpClaimTypes.Role).Select(c => c.Value).ToArray(); |
|
|
|
if (roles == null || !roles.Any()) |
|
|
|
@ -52,7 +52,7 @@ namespace Volo.Abp.Authorization.Permissions |
|
|
|
|
|
|
|
foreach (var role in roles) |
|
|
|
{ |
|
|
|
var multipleResult = await PermissionStore.IsGrantedAsync(permissionNames, Name, role); |
|
|
|
var multipleResult = await PermissionStore.IsGrantedAsync(permissionNames.ToArray(), Name, role); |
|
|
|
|
|
|
|
foreach (var grantResult in multipleResult.Result.Where(grantResult => |
|
|
|
result.Result.ContainsKey(grantResult.Key) && |
|
|
|
|