Browse Source

Refactor.

pull/6119/head
maliming 6 years ago
parent
commit
d986cc6509
  1. 38
      framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionChecker.cs
  2. 14
      framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/RolePermissionValueProvider.cs
  3. 3
      framework/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingProvider.cs
  4. 4
      modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingCacheItem.cs
  5. 2
      modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingManagementStore.cs
  6. 16
      modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingCacheItem_Tests.cs

38
framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionChecker.cs

@ -100,36 +100,34 @@ namespace Volo.Abp.Authorization.Permissions
foreach (var name in names) foreach (var name in names)
{ {
var permission = PermissionDefinitionManager.Get(name); 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); 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) 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); claimsPrincipal);
var multipleResult = await provider.CheckAsync(context); 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) && break;
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;
}
} }
} }

14
framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/RolePermissionValueProvider.cs

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

3
framework/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingProvider.cs

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

4
modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingCacheItem.cs

@ -28,10 +28,10 @@ namespace Volo.Abp.SettingManagement
return string.Format(CacheKeyFormat, providerName, providerKey, name); 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); var result = FormattedStringValueExtracter.Extract(cacheKey, CacheKeyFormat, true);
return result.IsMatch ? result.Matches.Last().Value : cacheKey; return result.IsMatch ? result.Matches.Last().Value : null;
} }
} }
} }

2
modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingManagementStore.cs

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

16
modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingCacheItem_Tests.cs

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