pull/6119/head
maliming 5 years ago
parent 3af83c9368
commit d986cc6509

@ -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;
}
}

@ -51,15 +51,13 @@ namespace Volo.Abp.Authorization.Permissions
foreach (var role in roles)
{
var multipleResult = await PermissionStore.IsGrantedAsync(permissionNames.ToArray(), Name, role);
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))
{
if (result.Result.ContainsKey(grantResult.Key) &&
result.Result[grantResult.Key] == PermissionGrantResult.Undefined &&
grantResult.Value != PermissionGrantResult.Undefined)
{
result.Result[grantResult.Key] = grantResult.Value;
permissionNames.RemoveAll(x => x == grantResult.Key);
}
result.Result[grantResult.Key] = grantResult.Value;
permissionNames.RemoveAll(x => x == grantResult.Key);
}
if (result.AllGranted || result.AllProhibited)

@ -55,8 +55,7 @@ namespace Volo.Abp.Settings
var notNullValues = settingValues.Where(x => x.Value != null).ToList();
foreach (var settingValue in notNullValues)
{
var value = settingValue;
var settingDefinition = settingDefinitions.First(x => x.Name == value.Name);
var settingDefinition = settingDefinitions.First(x => x.Name == settingValue.Name);
if (settingDefinition.IsEncrypted)
{
settingValue.Value = SettingEncryptionService.Decrypt(settingDefinition, settingValue.Value);

@ -28,10 +28,10 @@ namespace Volo.Abp.SettingManagement
return string.Format(CacheKeyFormat, providerName, providerKey, name);
}
public static string GetSettingNameFormCacheKey(string cacheKey)
public static string GetSettingNameFormCacheKeyOrNull(string cacheKey)
{
var result = FormattedStringValueExtracter.Extract(cacheKey, CacheKeyFormat, true);
return result.IsMatch ? result.Matches.Last().Value : cacheKey;
return result.IsMatch ? result.Matches.Last().Value : null;
}
}
}

@ -207,7 +207,7 @@ namespace Volo.Abp.SettingManagement
protected virtual string GetSettingNameFormCacheKeyOrNull(string key)
{
//TODO: throw ex when name is null?
return SettingCacheItem.GetSettingNameFormCacheKey(key);
return SettingCacheItem.GetSettingNameFormCacheKeyOrNull(key);
}
}
}

@ -0,0 +1,16 @@
using Shouldly;
using Xunit;
namespace Volo.Abp.SettingManagement
{
public class SettingCacheItem_Tests
{
[Fact]
public void GetSettingNameFormCacheKeyOrNull()
{
var key = SettingCacheItem.CalculateCacheKey("aaa", "bbb", "ccc");
SettingCacheItem.GetSettingNameFormCacheKeyOrNull(key).ShouldBe("aaa");
SettingCacheItem.GetSettingNameFormCacheKeyOrNull("aaabbbccc").ShouldBeNull();
}
}
}
Loading…
Cancel
Save