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