|
|
|
@ -100,36 +100,34 @@ namespace Volo.Abp.Authorization.Permissions
|
|
|
|
|
foreach (var name in names)
|
|
|
|
|
{
|
|
|
|
|
var permission = PermissionDefinitionManager.Get(name);
|
|
|
|
|
if (!permission.IsEnabled || !permission.MultiTenancySide.HasFlag(multiTenancySide))
|
|
|
|
|
{
|
|
|
|
|
result.Result.Add(name, PermissionGrantResult.Undefined);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
result.Result.Add(name, PermissionGrantResult.Undefined);
|
|
|
|
|
permissionDefinitions.Add(permission);
|
|
|
|
|
|
|
|
|
|
if (permission.IsEnabled && permission.MultiTenancySide.HasFlag(multiTenancySide))
|
|
|
|
|
{
|
|
|
|
|
permissionDefinitions.Add(permission);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach (var provider in PermissionValueProviderManager.ValueProviders)
|
|
|
|
|
{
|
|
|
|
|
var context = new PermissionValuesCheckContext(permissionDefinitions.Where(x => !x.Providers.Any() || x.Providers.Contains(provider.Name)).ToList(),
|
|
|
|
|
var context = new PermissionValuesCheckContext(
|
|
|
|
|
permissionDefinitions.Where(x => !x.Providers.Any() || x.Providers.Contains(provider.Name)).ToList(),
|
|
|
|
|
claimsPrincipal);
|
|
|
|
|
|
|
|
|
|
var multipleResult = await provider.CheckAsync(context);
|
|
|
|
|
foreach (var grantResult in multipleResult.Result)
|
|
|
|
|
foreach (var grantResult in multipleResult.Result.Where(grantResult =>
|
|
|
|
|
result.Result.ContainsKey(grantResult.Key) &&
|
|
|
|
|
result.Result[grantResult.Key] == PermissionGrantResult.Undefined &&
|
|
|
|
|
grantResult.Value != PermissionGrantResult.Undefined))
|
|
|
|
|
{
|
|
|
|
|
result.Result[grantResult.Key] = grantResult.Value;
|
|
|
|
|
permissionDefinitions.RemoveAll(x => x.Name == grantResult.Key);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (result.AllGranted || result.AllProhibited)
|
|
|
|
|
{
|
|
|
|
|
if (result.Result.ContainsKey(grantResult.Key) &&
|
|
|
|
|
result.Result[grantResult.Key] == PermissionGrantResult.Undefined &&
|
|
|
|
|
grantResult.Value != PermissionGrantResult.Undefined)
|
|
|
|
|
{
|
|
|
|
|
result.Result[grantResult.Key] = grantResult.Value;
|
|
|
|
|
permissionDefinitions.RemoveAll(x => x.Name == grantResult.Key);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (result.AllGranted || result.AllProhibited)
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|