|
|
|
@ -39,8 +39,10 @@ namespace Volo.Abp.Authorization.Permissions |
|
|
|
|
|
|
|
public override async Task<MultiplePermissionGrantResult> CheckAsync(PermissionValuesCheckContext context) |
|
|
|
{ |
|
|
|
var permissionNames = context.Permissions.Select(x => x.Name).ToList(); |
|
|
|
var result = new MultiplePermissionGrantResult(permissionNames.ToArray()); |
|
|
|
var permissionNames = context.Permissions.Select(x => x.Name).Distinct().ToArray(); |
|
|
|
Check.NotNullOrEmpty(permissionNames, nameof(permissionNames)); |
|
|
|
|
|
|
|
var result = new MultiplePermissionGrantResult(permissionNames); |
|
|
|
|
|
|
|
var roles = context.Principal?.FindAll(AbpClaimTypes.Role).Select(c => c.Value).ToArray(); |
|
|
|
if (roles == null || !roles.Any()) |
|
|
|
@ -50,7 +52,8 @@ namespace Volo.Abp.Authorization.Permissions |
|
|
|
|
|
|
|
foreach (var role in roles) |
|
|
|
{ |
|
|
|
var multipleResult = await PermissionStore.IsGrantedAsync(permissionNames.ToArray(), Name, role); |
|
|
|
var multipleResult = await PermissionStore.IsGrantedAsync(permissionNames, Name, role); |
|
|
|
|
|
|
|
foreach (var grantResult in multipleResult.Result.Where(grantResult => |
|
|
|
result.Result.ContainsKey(grantResult.Key) && |
|
|
|
result.Result[grantResult.Key] == PermissionGrantResult.Undefined && |
|
|
|
@ -64,6 +67,11 @@ namespace Volo.Abp.Authorization.Permissions |
|
|
|
{ |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
if (permissionNames.IsNullOrEmpty()) |
|
|
|
{ |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return result; |
|
|
|
|