Browse Source

Merge pull request #8894 from abpframework/maliming/simple-state-checker-enhancement

Rename some services and properties of StateChecker.
pull/8910/head
liangshiwei 5 years ago
committed by GitHub
parent
commit
47c379340a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/ToolbarItem.cs
  2. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/ToolbarManager.cs
  3. 4
      framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionDefinition.cs
  4. 10
      framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionChecker.cs
  5. 13
      framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionSimpleStateCheckerExtensions.cs
  6. 4
      framework/src/Volo.Abp.Core/Volo/Abp/SimpleStateChecking/AbpSimpleStateCheckerOptions.cs
  7. 2
      framework/src/Volo.Abp.Core/Volo/Abp/SimpleStateChecking/IHasSimpleStateCheckers.cs
  8. 10
      framework/src/Volo.Abp.Core/Volo/Abp/SimpleStateChecking/SimpleStateCheckerManager.cs
  9. 2
      framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureSimpleStateCheckerExtensions.cs
  10. 4
      framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalFeatureSimpleStateCheckerExtensions.cs
  11. 4
      framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuItem.cs
  12. 2
      framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/MenuManager.cs
  13. 16
      framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/PermissionStateProvider_Tests.cs
  14. 2
      framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/AuthorizationTestPermissionDefinitionProvider.cs
  15. 6
      framework/test/Volo.Abp.Core.Tests/Volo/Abp/SimpleStateChecking/SimpleStateCheckerTestBase.cs
  16. 4
      framework/test/Volo.Abp.Core.Tests/Volo/Abp/SimpleStateChecking/SimpleStateChecker_GlobalCheckCount_Test.cs
  17. 4
      framework/test/Volo.Abp.Core.Tests/Volo/Abp/SimpleStateChecking/SimpleStateChecker_Tests.cs
  18. 2
      modules/permission-management/test/Volo.Abp.PermissionManagement.TestBase/Volo/Abp/PermissionManagement/TestPermissionDefinitionProvider.cs

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/ToolbarItem.cs

@ -20,14 +20,14 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars
[Obsolete("Use RequirePermissions extension method.")]
public string RequiredPermissionName { get; set; }
public List<ISimpleStateChecker<ToolbarItem>> SimpleStateCheckers { get; }
public List<ISimpleStateChecker<ToolbarItem>> StateCheckers { get; }
public ToolbarItem([NotNull] Type componentType, int order = 0, string requiredPermissionName = null)
{
Order = order;
ComponentType = Check.NotNull(componentType, nameof(componentType));
RequiredPermissionName = requiredPermissionName;
SimpleStateCheckers = new List<ISimpleStateChecker<ToolbarItem>>();
StateCheckers = new List<ISimpleStateChecker<ToolbarItem>>();
}
}
}

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Toolbars/ToolbarManager.cs

@ -56,7 +56,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars
item.RequirePermissions(item.RequiredPermissionName);
}
var checkPermissionsToolbarItems = toolbar.Items.Where(x => x.SimpleStateCheckers.Any()).ToArray();
var checkPermissionsToolbarItems = toolbar.Items.Where(x => x.StateCheckers.Any()).ToArray();
if (checkPermissionsToolbarItems.Any())
{
var result = await SimpleStateCheckerManager.IsEnabledAsync(checkPermissionsToolbarItems);

4
framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionDefinition.cs

@ -32,7 +32,7 @@ namespace Volo.Abp.Authorization.Permissions
/// </summary>
public List<string> Providers { get; } //TODO: Rename to AllowedProviders?
public List<ISimpleStateChecker<PermissionDefinition>> SimpleStateCheckers { get; }
public List<ISimpleStateChecker<PermissionDefinition>> StateCheckers { get; }
public ILocalizableString DisplayName
{
@ -89,7 +89,7 @@ namespace Volo.Abp.Authorization.Permissions
Properties = new Dictionary<string, object>();
Providers = new List<string>();
SimpleStateCheckers = new List<ISimpleStateChecker<PermissionDefinition>>();
StateCheckers = new List<ISimpleStateChecker<PermissionDefinition>>();
_children = new List<PermissionDefinition>();
}

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

@ -16,20 +16,20 @@ namespace Volo.Abp.Authorization.Permissions
protected ICurrentPrincipalAccessor PrincipalAccessor { get; }
protected ICurrentTenant CurrentTenant { get; }
protected IPermissionValueProviderManager PermissionValueProviderManager { get; }
protected ISimpleStateCheckerManager<PermissionDefinition> PermissionSimpleStateCheckerManager { get; }
protected ISimpleStateCheckerManager<PermissionDefinition> StateCheckerManager { get; }
public PermissionChecker(
ICurrentPrincipalAccessor principalAccessor,
IPermissionDefinitionManager permissionDefinitionManager,
ICurrentTenant currentTenant,
IPermissionValueProviderManager permissionValueProviderManager,
ISimpleStateCheckerManager<PermissionDefinition> permissionSimpleStateCheckerManager)
ISimpleStateCheckerManager<PermissionDefinition> stateCheckerManager)
{
PrincipalAccessor = principalAccessor;
PermissionDefinitionManager = permissionDefinitionManager;
CurrentTenant = currentTenant;
PermissionValueProviderManager = permissionValueProviderManager;
PermissionSimpleStateCheckerManager = permissionSimpleStateCheckerManager;
StateCheckerManager = stateCheckerManager;
}
public virtual async Task<bool> IsGrantedAsync(string name)
@ -50,7 +50,7 @@ namespace Volo.Abp.Authorization.Permissions
return false;
}
if (!await PermissionSimpleStateCheckerManager.IsEnabledAsync(permission))
if (!await StateCheckerManager.IsEnabledAsync(permission))
{
return false;
}
@ -113,7 +113,7 @@ namespace Volo.Abp.Authorization.Permissions
result.Result.Add(name, PermissionGrantResult.Undefined);
if (permission.IsEnabled &&
await PermissionSimpleStateCheckerManager.IsEnabledAsync(permission) &&
await StateCheckerManager.IsEnabledAsync(permission) &&
permission.MultiTenancySide.HasFlag(multiTenancySide))
{
permissionDefinitions.Add(permission);

13
framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionSimpleStateCheckerExtensions.cs

@ -8,7 +8,7 @@ namespace Volo.Abp.Authorization.Permissions
public static TState RequireAuthenticated<TState>([NotNull] this TState state)
where TState : IHasSimpleStateCheckers<TState>
{
state.SimpleStateCheckers.Add(new RequireAuthenticatedSimpleStateChecker<TState>());
state.StateCheckers.Add(new RequireAuthenticatedSimpleStateChecker<TState>());
return state;
}
@ -34,7 +34,7 @@ namespace Volo.Abp.Authorization.Permissions
public static TState RequirePermissions<TState>(
[NotNull] this TState state,
bool requiresAll,
bool batchCheck = true,
bool batchCheck,
params string[] permissions)
where TState : IHasSimpleStateCheckers<TState>
{
@ -43,15 +43,12 @@ namespace Volo.Abp.Authorization.Permissions
if (batchCheck)
{
lock (state)
{
RequirePermissionsSimpleBatchStateChecker<TState>.Instance.AddCheckModels(new RequirePermissionsSimpleBatchStateCheckerModel<TState>(state, permissions, requiresAll));
state.SimpleStateCheckers.Add(RequirePermissionsSimpleBatchStateChecker<TState>.Instance);
}
RequirePermissionsSimpleBatchStateChecker<TState>.Instance.AddCheckModels(new RequirePermissionsSimpleBatchStateCheckerModel<TState>(state, permissions, requiresAll));
state.StateCheckers.Add(RequirePermissionsSimpleBatchStateChecker<TState>.Instance);
}
else
{
state.SimpleStateCheckers.Add(new RequirePermissionsSimpleStateChecker<TState>(new RequirePermissionsSimpleBatchStateCheckerModel<TState>(state, permissions, requiresAll)));
state.StateCheckers.Add(new RequirePermissionsSimpleStateChecker<TState>(new RequirePermissionsSimpleBatchStateCheckerModel<TState>(state, permissions, requiresAll)));
}
return state;

4
framework/src/Volo.Abp.Core/Volo/Abp/SimpleStateChecking/AbpSimpleStateCheckerOptions.cs

@ -5,11 +5,11 @@ namespace Volo.Abp.SimpleStateChecking
public class AbpSimpleStateCheckerOptions<TState>
where TState : IHasSimpleStateCheckers<TState>
{
public ITypeList<ISimpleStateChecker<TState>> GlobalSimpleStateCheckers { get; }
public ITypeList<ISimpleStateChecker<TState>> GlobalStateCheckers { get; }
public AbpSimpleStateCheckerOptions()
{
GlobalSimpleStateCheckers = new TypeList<ISimpleStateChecker<TState>>();
GlobalStateCheckers = new TypeList<ISimpleStateChecker<TState>>();
}
}
}

2
framework/src/Volo.Abp.Core/Volo/Abp/SimpleStateChecking/IHasSimpleStateCheckers.cs

@ -5,6 +5,6 @@ namespace Volo.Abp.SimpleStateChecking
public interface IHasSimpleStateCheckers<TState>
where TState : IHasSimpleStateCheckers<TState>
{
List<ISimpleStateChecker<TState>> SimpleStateCheckers { get; }
List<ISimpleStateChecker<TState>> StateCheckers { get; }
}
}

10
framework/src/Volo.Abp.Core/Volo/Abp/SimpleStateChecking/SimpleStateCheckerManager.cs

@ -32,7 +32,7 @@ namespace Volo.Abp.SimpleStateChecking
using (var scope = ServiceProvider.CreateScope())
{
var batchStateCheckers = states.SelectMany(x => x.SimpleStateCheckers)
var batchStateCheckers = states.SelectMany(x => x.StateCheckers)
.Where(x => x is ISimpleBatchStateChecker<TState>)
.Cast<ISimpleBatchStateChecker<TState>>()
.GroupBy(x => x)
@ -42,7 +42,7 @@ namespace Volo.Abp.SimpleStateChecking
{
var context = new SimpleBatchStateCheckerContext<TState>(
scope.ServiceProvider.GetRequiredService<ICachedServiceProvider>(),
states.Where(x => x.SimpleStateCheckers.Contains(stateChecker)).ToArray());
states.Where(x => x.StateCheckers.Contains(stateChecker)).ToArray());
foreach (var x in await stateChecker.IsEnabledAsync(context))
{
@ -55,7 +55,7 @@ namespace Volo.Abp.SimpleStateChecking
}
}
foreach (ISimpleBatchStateChecker<TState> globalStateChecker in Options.GlobalSimpleStateCheckers
foreach (ISimpleBatchStateChecker<TState> globalStateChecker in Options.GlobalStateCheckers
.Where(x => typeof(ISimpleBatchStateChecker<TState>).IsAssignableFrom(x))
.Select(x => ServiceProvider.GetRequiredService(x)))
{
@ -87,7 +87,7 @@ namespace Volo.Abp.SimpleStateChecking
{
var context = new SimpleStateCheckerContext<TState>(scope.ServiceProvider.GetRequiredService<ICachedServiceProvider>(), state);
foreach (var provider in state.SimpleStateCheckers.WhereIf(!useBatchChecker, x => x is not ISimpleBatchStateChecker<TState>))
foreach (var provider in state.StateCheckers.WhereIf(!useBatchChecker, x => x is not ISimpleBatchStateChecker<TState>))
{
if (!await provider.IsEnabledAsync(context))
{
@ -95,7 +95,7 @@ namespace Volo.Abp.SimpleStateChecking
}
}
foreach (ISimpleStateChecker<TState> provider in Options.GlobalSimpleStateCheckers
foreach (ISimpleStateChecker<TState> provider in Options.GlobalStateCheckers
.WhereIf(!useBatchChecker, x => !typeof(ISimpleBatchStateChecker<TState>).IsAssignableFrom(x))
.Select(x => ServiceProvider.GetRequiredService(x)))
{

2
framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureSimpleStateCheckerExtensions.cs

@ -23,7 +23,7 @@ namespace Volo.Abp.Features
Check.NotNull(state, nameof(state));
Check.NotNullOrEmpty(features, nameof(features));
state.SimpleStateCheckers.Add(new RequireFeaturesSimpleStateChecker<TState>(requiresAll, features));
state.StateCheckers.Add(new RequireFeaturesSimpleStateChecker<TState>(requiresAll, features));
return state;
}
}

4
framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalFeatureSimpleStateCheckerExtensions.cs

@ -23,7 +23,7 @@ namespace Volo.Abp.GlobalFeatures
Check.NotNull(state, nameof(state));
Check.NotNullOrEmpty(globalFeatures, nameof(globalFeatures));
state.SimpleStateCheckers.Add(new RequireGlobalFeaturesSimpleStateChecker<TState>(requiresAll, globalFeatures));
state.StateCheckers.Add(new RequireGlobalFeaturesSimpleStateChecker<TState>(requiresAll, globalFeatures));
return state;
}
@ -44,7 +44,7 @@ namespace Volo.Abp.GlobalFeatures
Check.NotNull(state, nameof(state));
Check.NotNullOrEmpty(globalFeatures, nameof(globalFeatures));
state.SimpleStateCheckers.Add(new RequireGlobalFeaturesSimpleStateChecker<TState>(requiresAll, globalFeatures));
state.StateCheckers.Add(new RequireGlobalFeaturesSimpleStateChecker<TState>(requiresAll, globalFeatures));
return state;
}
}

4
framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuItem.cs

@ -76,7 +76,7 @@ namespace Volo.Abp.UI.Navigation
[Obsolete("Use RequirePermissions extension method.")]
public string RequiredPermissionName { get; set; }
public List<ISimpleStateChecker<ApplicationMenuItem>> SimpleStateCheckers { get; }
public List<ISimpleStateChecker<ApplicationMenuItem>> StateCheckers { get; }
/// <summary>
/// Can be used to store a custom object related to this menu item. Optional.
@ -118,7 +118,7 @@ namespace Volo.Abp.UI.Navigation
ElementId = elementId ?? GetDefaultElementId();
CssClass = cssClass;
RequiredPermissionName = requiredPermissionName;
SimpleStateCheckers = new List<ISimpleStateChecker<ApplicationMenuItem>>();
StateCheckers = new List<ISimpleStateChecker<ApplicationMenuItem>>();
Items = new ApplicationMenuItemList();
}

2
framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/MenuManager.cs

@ -59,7 +59,7 @@ namespace Volo.Abp.UI.Navigation
}
}
var checkPermissionsMenuItems = allMenuItems.Where(x => x.SimpleStateCheckers.Any()).ToArray();
var checkPermissionsMenuItems = allMenuItems.Where(x => x.StateCheckers.Any()).ToArray();
if (checkPermissionsMenuItems.Any())
{

16
framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/PermissionStateProvider_Tests.cs

@ -12,13 +12,13 @@ namespace Volo.Abp.Authorization
{
public abstract class PermissionStateProvider_Tests : AuthorizationTestBase
{
protected ISimpleStateCheckerManager<PermissionDefinition> PermissionSimpleStateCheckerManager { get; }
protected ISimpleStateCheckerManager<PermissionDefinition> StateCheckerManager { get; }
protected IPermissionDefinitionManager PermissionDefinitionManager { get; }
protected ICurrentPrincipalAccessor CurrentPrincipalAccessor { get; }
public PermissionStateProvider_Tests()
{
PermissionSimpleStateCheckerManager = GetRequiredService<ISimpleStateCheckerManager<PermissionDefinition>>();
StateCheckerManager = GetRequiredService<ISimpleStateCheckerManager<PermissionDefinition>>();
PermissionDefinitionManager = GetRequiredService<IPermissionDefinitionManager>();
CurrentPrincipalAccessor = GetRequiredService<ICurrentPrincipalAccessor>();
}
@ -30,13 +30,13 @@ namespace Volo.Abp.Authorization
public async Task PermissionState_Test()
{
var myPermission1 = PermissionDefinitionManager.Get("MyPermission1");
myPermission1.SimpleStateCheckers.ShouldContain(x => x.GetType() == typeof(TestRequireEditionPermissionSimpleStateChecker));
myPermission1.StateCheckers.ShouldContain(x => x.GetType() == typeof(TestRequireEditionPermissionSimpleStateChecker));
(await PermissionSimpleStateCheckerManager.IsEnabledAsync(myPermission1)).ShouldBeFalse();
(await StateCheckerManager.IsEnabledAsync(myPermission1)).ShouldBeFalse();
using (CurrentPrincipalAccessor.Change(new Claim(AbpClaimTypes.EditionId, Guid.NewGuid().ToString())))
{
(await PermissionSimpleStateCheckerManager.IsEnabledAsync(myPermission1)).ShouldBeTrue();
(await StateCheckerManager.IsEnabledAsync(myPermission1)).ShouldBeTrue();
}
}
}
@ -47,7 +47,7 @@ namespace Volo.Abp.Authorization
{
services.Configure<AbpSimpleStateCheckerOptions<PermissionDefinition>>(options =>
{
options.GlobalSimpleStateCheckers.Add<TestGlobalRequireRolePermissionSimpleStateChecker>();
options.GlobalStateCheckers.Add<TestGlobalRequireRolePermissionSimpleStateChecker>();
});
}
@ -56,11 +56,11 @@ namespace Volo.Abp.Authorization
{
var myPermission2 = PermissionDefinitionManager.Get("MyPermission2");
(await PermissionSimpleStateCheckerManager.IsEnabledAsync(myPermission2)).ShouldBeFalse();
(await StateCheckerManager.IsEnabledAsync(myPermission2)).ShouldBeFalse();
using (CurrentPrincipalAccessor.Change(new Claim(AbpClaimTypes.Role, "admin")))
{
(await PermissionSimpleStateCheckerManager.IsEnabledAsync(myPermission2)).ShouldBeTrue();
(await StateCheckerManager.IsEnabledAsync(myPermission2)).ShouldBeTrue();
}
}
}

2
framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/AuthorizationTestPermissionDefinitionProvider.cs

@ -17,7 +17,7 @@ namespace Volo.Abp.Authorization.TestServices
group.AddPermission("MyAuthorizedService1");
group.AddPermission("MyPermission1").SimpleStateCheckers.Add(new TestRequireEditionPermissionSimpleStateChecker());
group.AddPermission("MyPermission1").StateCheckers.Add(new TestRequireEditionPermissionSimpleStateChecker());
group.AddPermission("MyPermission2");
group.GetPermissionOrNull("MyAuthorizedService1").ShouldNotBeNull();

6
framework/test/Volo.Abp.Core.Tests/Volo/Abp/SimpleStateChecking/SimpleStateCheckerTestBase.cs

@ -30,16 +30,16 @@ namespace Volo.Abp.SimpleStateChecking
public DateTime? LastModificationTime { get; set; }
public List<ISimpleStateChecker<MyStateEntity>> SimpleStateCheckers { get; }
public List<ISimpleStateChecker<MyStateEntity>> StateCheckers { get; }
public MyStateEntity()
{
SimpleStateCheckers = new List<ISimpleStateChecker<MyStateEntity>>();
StateCheckers = new List<ISimpleStateChecker<MyStateEntity>>();
}
public MyStateEntity AddSimpleStateChecker(ISimpleStateChecker<MyStateEntity> checker)
{
SimpleStateCheckers.Add(checker);
StateCheckers.Add(checker);
return this;
}
}

4
framework/test/Volo.Abp.Core.Tests/Volo/Abp/SimpleStateChecking/SimpleStateChecker_GlobalCheckCount_Test.cs

@ -13,8 +13,8 @@ namespace Volo.Abp.SimpleStateChecking
{
services.Configure<AbpSimpleStateCheckerOptions<MyStateEntity>>(options =>
{
options.GlobalSimpleStateCheckers.Add<MyGlobalSimpleStateChecker>();
options.GlobalSimpleStateCheckers.Add<MyGlobalSimpleBatchStateChecker>();
options.GlobalStateCheckers.Add<MyGlobalSimpleStateChecker>();
options.GlobalStateCheckers.Add<MyGlobalSimpleBatchStateChecker>();
});
base.AfterAddApplication(services);

4
framework/test/Volo.Abp.Core.Tests/Volo/Abp/SimpleStateChecking/SimpleStateChecker_Tests.cs

@ -13,8 +13,8 @@ namespace Volo.Abp.SimpleStateChecking
{
services.Configure<AbpSimpleStateCheckerOptions<MyStateEntity>>(options =>
{
options.GlobalSimpleStateCheckers.Add<MyGlobalSimpleStateChecker>();
options.GlobalSimpleStateCheckers.Add<MyGlobalSimpleBatchStateChecker>();
options.GlobalStateCheckers.Add<MyGlobalSimpleStateChecker>();
options.GlobalStateCheckers.Add<MyGlobalSimpleBatchStateChecker>();
});
base.AfterAddApplication(services);

2
modules/permission-management/test/Volo.Abp.PermissionManagement.TestBase/Volo/Abp/PermissionManagement/TestPermissionDefinitionProvider.cs

@ -19,7 +19,7 @@ namespace Volo.Abp.PermissionManagement
testGroup.AddPermission("MyPermission4", multiTenancySide: MultiTenancySides.Host).WithProviders(UserPermissionValueProvider.ProviderName);
testGroup.AddPermission("MyPermission5").SimpleStateCheckers.Add(new TestRequireRolePermissionStateProvider("super-admin"));
testGroup.AddPermission("MyPermission5").StateCheckers.Add(new TestRequireRolePermissionStateProvider("super-admin"));
}
}
}

Loading…
Cancel
Save