mirror of https://github.com/abpframework/abp.git
8 changed files with 85 additions and 2 deletions
@ -0,0 +1,14 @@ |
|||||
|
using Volo.Abp.Authorization.Permissions; |
||||
|
|
||||
|
namespace Volo.Abp.Features |
||||
|
{ |
||||
|
public static class FeatureDefinitionExtensions |
||||
|
{ |
||||
|
public static void RequireFeatures(this PermissionDefinition permissionDefinition, params string[] features) |
||||
|
{ |
||||
|
Check.NotNullOrEmpty(features, nameof(features)); |
||||
|
|
||||
|
permissionDefinition.AddStateProvider(new RequireFeaturesPermissionStateProvider(features)); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,25 @@ |
|||||
|
using System.Collections.Generic; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.Extensions.DependencyInjection; |
||||
|
using Volo.Abp.Authorization.Permissions; |
||||
|
|
||||
|
namespace Volo.Abp.Features |
||||
|
{ |
||||
|
public class RequireFeaturesPermissionStateProvider : IPermissionStateProvider |
||||
|
{ |
||||
|
private readonly List<string> _requireFeatures = new List<string>(); |
||||
|
|
||||
|
public RequireFeaturesPermissionStateProvider(params string[] requireFeatures) |
||||
|
{ |
||||
|
Check.NotNullOrEmpty(requireFeatures, nameof(requireFeatures)); |
||||
|
|
||||
|
_requireFeatures.AddRange(requireFeatures); |
||||
|
} |
||||
|
|
||||
|
public async Task<bool> IsEnabledAsync(PermissionStateContext context) |
||||
|
{ |
||||
|
var feature = context.ServiceProvider.GetRequiredService<IFeatureChecker>(); |
||||
|
return await feature.IsEnabledAsync(true, _requireFeatures.ToArray()); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,14 @@ |
|||||
|
using Volo.Abp.Authorization.Permissions; |
||||
|
|
||||
|
namespace Volo.Abp.GlobalFeatures |
||||
|
{ |
||||
|
public static class GlobalFeatureDefinitionExtensions |
||||
|
{ |
||||
|
public static void RequireGlobalFeatures(this PermissionDefinition permissionDefinition, params string[] globalFeatures) |
||||
|
{ |
||||
|
Check.NotNullOrEmpty(globalFeatures, nameof(globalFeatures)); |
||||
|
|
||||
|
permissionDefinition.AddStateProvider(new RequireGlobalFeaturesPermissionStateProvider(globalFeatures)); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,24 @@ |
|||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Threading.Tasks; |
||||
|
using Volo.Abp.Authorization.Permissions; |
||||
|
|
||||
|
namespace Volo.Abp.GlobalFeatures |
||||
|
{ |
||||
|
public class RequireGlobalFeaturesPermissionStateProvider : IPermissionStateProvider |
||||
|
{ |
||||
|
private readonly List<string> _requireGlobalFeatures = new List<string>(); |
||||
|
|
||||
|
public RequireGlobalFeaturesPermissionStateProvider(params string[] requireGlobalFeatures) |
||||
|
{ |
||||
|
Check.NotNullOrEmpty(requireGlobalFeatures, nameof(requireGlobalFeatures)); |
||||
|
|
||||
|
_requireGlobalFeatures.AddRange(requireGlobalFeatures); |
||||
|
} |
||||
|
|
||||
|
public Task<bool> IsEnabledAsync(PermissionStateContext context) |
||||
|
{ |
||||
|
return Task.FromResult(_requireGlobalFeatures.All(x => GlobalFeatureManager.Instance.IsEnabled(x))); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue