diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs index 5070cef3a6..65812eb807 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Menus/SettingManagementMenuContributor.cs @@ -2,6 +2,7 @@ using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using Volo.Abp.Features; using Volo.Abp.SettingManagement.Localization; using Volo.Abp.UI.Navigation; @@ -19,6 +20,12 @@ namespace Volo.Abp.SettingManagement.Blazor.Menus private async Task ConfigureMainMenuAsync(MenuConfigurationContext context) { + var featureChecker = context.ServiceProvider.GetRequiredService(); + if (!await featureChecker.IsEnabledAsync(SettingManagementFeatures.Enable)) + { + return; + } + var settingManagementPageOptions = context.ServiceProvider.GetRequiredService>().Value; var settingPageCreationContext = new SettingComponentCreationContext(context.ServiceProvider); if (!settingManagementPageOptions.Contributors.Any() || @@ -33,7 +40,7 @@ namespace Volo.Abp.SettingManagement.Blazor.Menus /* This may happen if MVC UI is being used in the same application. * In this case, we are removing the MVC setting management UI. */ context.Menu.GetAdministration().TryRemoveMenuItem(SettingManagementMenus.GroupName); - + context.Menu .GetAdministration() .AddItem( @@ -60,4 +67,4 @@ namespace Volo.Abp.SettingManagement.Blazor.Menus return false; } } -} \ No newline at end of file +} diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor index e1b3680bc7..d4d1beeafc 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Pages/SettingManagement/SettingManagement.razor @@ -1,6 +1,6 @@ @page "/setting-management" -@using Microsoft.AspNetCore.Authorization -@attribute [Authorize(SettingManagementPermissions.Emailing)] +@using Volo.Abp.Features +@attribute [RequiresFeature(SettingManagementFeatures.Enable)] @* ************************* PAGE HEADER ************************* *@ @@ -39,4 +39,4 @@ - \ No newline at end of file + diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj index e9c00a0afc..38991408d5 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo.Abp.SettingManagement.Domain.Shared.csproj @@ -26,6 +26,8 @@ + + diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/AbpSettingManagementDomainSharedModule.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/AbpSettingManagementDomainSharedModule.cs index d6b6ba065e..0db97f0c6a 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/AbpSettingManagementDomainSharedModule.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/AbpSettingManagementDomainSharedModule.cs @@ -1,11 +1,15 @@ -using Volo.Abp.Modularity; +using Volo.Abp.Features; +using Volo.Abp.Modularity; using Volo.Abp.Localization; using Volo.Abp.SettingManagement.Localization; +using Volo.Abp.Validation; using Volo.Abp.VirtualFileSystem; namespace Volo.Abp.SettingManagement { - [DependsOn(typeof(AbpLocalizationModule))] + [DependsOn(typeof(AbpLocalizationModule), + typeof(AbpValidationModule), + typeof(AbpFeaturesModule))] public class AbpSettingManagementDomainSharedModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json index 88eb894435..a58714bf0f 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json @@ -14,6 +14,9 @@ "SmtpEnableSsl": "Enable ssl", "SmtpUseDefaultCredentials": "Use default credentials", "DefaultFromAddress": "Default from address", - "DefaultFromDisplayName": "Default from display name" + "DefaultFromDisplayName": "Default from display name", + "Feature:SettingManagementGroup": "Setting Management", + "Feature:SettingManagementEnable": "Enable setting management", + "Feature:SettingManagementEnableDescription": "Enable setting management system in the application." } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/tr.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/tr.json index 1540501b6e..5755313c65 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/tr.json +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/tr.json @@ -14,6 +14,9 @@ "SmtpEnableSsl": "Ssl'i aktif et", "SmtpUseDefaultCredentials": "Varsayılan yetkilendirmeleri kullan", "DefaultFromAddress": "Varsayılan gönderici görünen isim", - "DefaultFromDisplayName": "Varsayılan gönderici email adresi" + "DefaultFromDisplayName": "Varsayılan gönderici email adresi", + "Feature:SettingManagementGroup": "Ayar yönetimi", + "Feature:SettingManagementEnable": "Ayar yönetimini etkinleştir", + "Feature:SettingManagementEnableDescription": "Uygulamada ayar yönetim sistemini etkinleştirin." } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json index 996c07ebc2..b9763644c4 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json @@ -14,6 +14,9 @@ "SmtpEnableSsl": "启用ssl", "SmtpUseDefaultCredentials": "使用默认证书", "DefaultFromAddress": "默认发件人", - "DefaultFromDisplayName": "默认显示名称" + "DefaultFromDisplayName": "默认显示名称", + "Feature:SettingManagementGroup": "设置管理", + "Feature:SettingManagementEnable": "启用设置管理", + "Feature:SettingManagementEnableDescription": "在应用程序中启用设置管理系统." } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hant.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hant.json index 175cd47124..5490bf678a 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hant.json +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hant.json @@ -14,6 +14,9 @@ "SmtpEnableSsl": "啟用 SSL", "SmtpUseDefaultCredentials": "使用預設Credentials", "DefaultFromAddress": "預設發信信箱", - "DefaultFromDisplayName": "預設信件顯示名稱" + "DefaultFromDisplayName": "預設信件顯示名稱", + "Feature:SettingManagementGroup": "設定管理", + "Feature:SettingManagementEnable": "啟用設定管理", + "Feature:SettingManagementEnableDescription": "在應用程序中啟用設定管理系統." } -} \ No newline at end of file +} diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingManagementFeatureDefinitionProvider.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingManagementFeatureDefinitionProvider.cs new file mode 100644 index 0000000000..19248e85b1 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingManagementFeatureDefinitionProvider.cs @@ -0,0 +1,27 @@ +using Volo.Abp.Features; +using Volo.Abp.Localization; +using Volo.Abp.SettingManagement.Localization; +using Volo.Abp.Validation.StringValues; + +namespace Volo.Abp.SettingManagement +{ + public class SettingManagementFeatureDefinitionProvider: FeatureDefinitionProvider + { + public override void Define(IFeatureDefinitionContext context) + { + var group = context.AddGroup(SettingManagementFeatures.GroupName, + L("Feature:SettingManagementGroup")); + + group.AddFeature(SettingManagementFeatures.Enable, + "true", + L("Feature:SettingManagementEnable"), + L("Feature:SettingManagementEnableDescription"), + new ToggleStringValueType()); + } + + private static LocalizableString L(string name) + { + return LocalizableString.Create(name); + } + } +} diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingManagementFeatures.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingManagementFeatures.cs new file mode 100644 index 0000000000..e8b2b69846 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingManagementFeatures.cs @@ -0,0 +1,9 @@ +namespace Volo.Abp.SettingManagement +{ + public class SettingManagementFeatures + { + public const string GroupName = "TextManagement"; + + public const string Enable = GroupName + ".Enable"; + } +} diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/AbpSettingManagementWebModule.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/AbpSettingManagementWebModule.cs index d1c1df76fe..6a2a970b43 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/AbpSettingManagementWebModule.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/AbpSettingManagementWebModule.cs @@ -43,11 +43,6 @@ namespace Volo.Abp.SettingManagement.Web options.FileSets.AddEmbedded(); }); - Configure(options => - { - options.Conventions.AuthorizePage("/SettingManagement/Index", SettingManagementPermissions.Emailing); - }); - Configure(options => { options.ScriptBundles diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs index 59fc10c174..45ad67b375 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs @@ -1,9 +1,8 @@ -using System; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Localization; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using System.Linq; using System.Threading.Tasks; +using Volo.Abp.Features; using Volo.Abp.SettingManagement.Web.Pages.SettingManagement; using Volo.Abp.UI.Navigation; using Volo.Abp.SettingManagement.Localization; @@ -26,6 +25,12 @@ namespace Volo.Abp.SettingManagement.Web.Navigation return; } + var featureChecker = context.ServiceProvider.GetRequiredService(); + if (!await featureChecker.IsEnabledAsync(SettingManagementFeatures.Enable)) + { + return; + } + var settingManagementPageOptions = context.ServiceProvider.GetRequiredService>().Value; var settingPageCreationContext = new SettingPageCreationContext(context.ServiceProvider); if (!settingManagementPageOptions.Contributors.Any() || diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Index.cshtml.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Index.cshtml.cs index 8cc7f62143..656b71daec 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Index.cshtml.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Index.cshtml.cs @@ -4,9 +4,11 @@ using Microsoft.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; using Volo.Abp.EventBus.Local; +using Volo.Abp.Features; namespace Volo.Abp.SettingManagement.Web.Pages.SettingManagement { + [RequiresFeature(SettingManagementFeatures.Enable)] public class IndexModel : AbpPageModel { public SettingPageCreationContext SettingPageCreationContext { get; private set; }