From d7529651e899c85cc59e4bb3d2f5e459d904922d Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Mon, 4 Mar 2019 18:01:46 +0300 Subject: [PATCH] Add and fill Features for ApplicationConfigurationDto --- .../ApplicationConfigurationDto.cs | 2 ++ .../ApplicationFeatureConfigurationDto.cs | 9 ++++++ .../Volo/Abp/AspNetCore/Mvc/AbpController.cs | 5 +++- .../AbpApplicationConfigurationAppService.cs | 30 +++++++++++++++++-- 4 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationFeatureConfigurationDto.cs diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationConfigurationDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationConfigurationDto.cs index 6f41399c29..44e9076751 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationConfigurationDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationConfigurationDto.cs @@ -12,5 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations public ApplicationSettingConfigurationDto Setting { get; set; } public CurrentUserDto CurrentUser { get; set; } + + public ApplicationFeatureConfigurationDto Features { get; set; } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationFeatureConfigurationDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationFeatureConfigurationDto.cs new file mode 100644 index 0000000000..8917e3dcfa --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationFeatureConfigurationDto.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations +{ + public class ApplicationFeatureConfigurationDto + { + public Dictionary Values { get; set; } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpController.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpController.cs index e9e535c4be..48917ecd8b 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpController.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpController.cs @@ -5,6 +5,7 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Volo.Abp.Aspects; using Volo.Abp.AspNetCore.Mvc.Validation; +using Volo.Abp.Features; using Volo.Abp.Guids; using Volo.Abp.MultiTenancy; using Volo.Abp.ObjectMapping; @@ -33,7 +34,9 @@ namespace Volo.Abp.AspNetCore.Mvc public IClock Clock { get; set; } public IModelStateValidator ModelValidator { get; set; } - + + public IFeatureChecker FeatureChecker { get; set; } + public List AppliedCrossCuttingConcerns { get; } = new List(); protected virtual void ValidateModel() diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs index 086fbf1d72..2ea9282a91 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs @@ -4,10 +4,10 @@ using Microsoft.Extensions.Localization; using Microsoft.Extensions.Options; using System; using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; using Volo.Abp.Application.Services; using Volo.Abp.Authorization; +using Volo.Abp.Features; using Volo.Abp.Localization; using Volo.Abp.Settings; using Volo.Abp.Users; @@ -23,6 +23,7 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations private readonly ICurrentUser _currentUser; private readonly ISettingProvider _settingProvider; private readonly ISettingDefinitionManager _settingDefinitionManager; + private readonly IFeatureDefinitionManager _featureDefinitionManager; public AbpApplicationConfigurationAppService( IOptions localizationOptions, @@ -31,7 +32,8 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations IAuthorizationService authorizationService, ICurrentUser currentUser, ISettingProvider settingProvider, - SettingDefinitionManager settingDefinitionManager) + SettingDefinitionManager settingDefinitionManager, + IFeatureDefinitionManager featureDefinitionManager) { _serviceProvider = serviceProvider; _abpAuthorizationPolicyProvider = abpAuthorizationPolicyProvider; @@ -39,16 +41,18 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations _currentUser = currentUser; _settingProvider = settingProvider; _settingDefinitionManager = settingDefinitionManager; + _featureDefinitionManager = featureDefinitionManager; _localizationOptions = localizationOptions.Value; } - public async Task GetAsync() + public virtual async Task GetAsync() { //TODO: Optimize & cache..? return new ApplicationConfigurationDto { Auth = await GetAuthConfigAsync(), + Features = await GetFeaturesConfigAsync(), Localization = GetLocalizationConfig(), CurrentUser = GetCurrentUser(), Setting = await GetSettingConfigAsync() @@ -126,5 +130,25 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations return result; } + + protected virtual async Task GetFeaturesConfigAsync() + { + var result = new ApplicationFeatureConfigurationDto + { + Values = new Dictionary() + }; + + foreach (var featureDefinition in _featureDefinitionManager.GetAll()) + { + if (!featureDefinition.IsVisibleToClients) + { + continue; + } + + result.Values[featureDefinition.Name] = await FeatureChecker.GetOrNullAsync(featureDefinition.Name); + } + + return result; + } } } \ No newline at end of file