From e309df5c01c4967fe5ef1372d005d3f8d200c061 Mon Sep 17 00:00:00 2001 From: colin Date: Wed, 17 Jun 2026 16:29:01 +0800 Subject: [PATCH] feat: Add Account Setting Group --- .../AdminServiceModule.cs | 2 + ...NGYUN.Abp.MicroService.AdminService.csproj | 1 + .../SystemGroupSettingDefinitionProvider.cs | 258 ++++++++++++++++++ .../AccountSettingDefinitionProvider.cs | 26 +- 4 files changed, 279 insertions(+), 8 deletions(-) create mode 100644 aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/SystemGroupSettingDefinitionProvider.cs diff --git a/aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/AdminServiceModule.cs b/aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/AdminServiceModule.cs index d5198f7e1..a751ca3fc 100644 --- a/aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/AdminServiceModule.cs +++ b/aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/AdminServiceModule.cs @@ -4,6 +4,7 @@ using LINGYUN.Abp.AspNetCore.Mvc.Localization; using LINGYUN.Abp.AspNetCore.Mvc.Wrapper; using LINGYUN.Abp.Auditing; using LINGYUN.Abp.AuditLogging.Elasticsearch; +using LINGYUN.Abp.BlobManagement.SettingManagement; using LINGYUN.Abp.CachingManagement; using LINGYUN.Abp.CachingManagement.StackExchangeRedis; using LINGYUN.Abp.Claims.Mapping; @@ -58,6 +59,7 @@ namespace LINGYUN.Abp.MicroService.AdminService; typeof(AbpTencentCloudSettingManagementModule), // typeof(AbpWeChatSettingManagementModule), typeof(AbpWxPusherSettingManagementModule), + typeof(AbpBlobManagementSettingManagementModule), typeof(AbpSettingManagementApplicationModule), typeof(AbpSettingManagementHttpApiModule), diff --git a/aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/LINGYUN.Abp.MicroService.AdminService.csproj b/aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/LINGYUN.Abp.MicroService.AdminService.csproj index f6010ebc6..a7916e170 100644 --- a/aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/LINGYUN.Abp.MicroService.AdminService.csproj +++ b/aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/LINGYUN.Abp.MicroService.AdminService.csproj @@ -55,6 +55,7 @@ + diff --git a/aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/SystemGroupSettingDefinitionProvider.cs b/aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/SystemGroupSettingDefinitionProvider.cs new file mode 100644 index 000000000..e964206d8 --- /dev/null +++ b/aspnet-core/aspire/LINGYUN.Abp.MicroService.AdminService/SystemGroupSettingDefinitionProvider.cs @@ -0,0 +1,258 @@ +using LINGYUN.Abp.SettingManagement; +using Microsoft.Extensions.Localization; +using Microsoft.Extensions.Options; +using Volo.Abp; +using Volo.Abp.Emailing; +using Volo.Abp.Localization; +using Volo.Abp.SettingManagement; +using Volo.Abp.SettingManagement.Localization; +using Volo.Abp.Settings; +using Volo.Abp.Timing; +using ValueType = Volo.Abp.Settings.ValueType; + +namespace LINGYUN.Abp.MicroService.AdminService; + +public class SystemGroupSettingDefinitionProvider : SettingDefinitionProvider +{ + private const string GroupName = "System"; + + protected ITimezoneProvider TimezoneProvider { get; } + protected AbpLocalizationOptions LocalizationOptions { get; } + protected IStringLocalizerFactory StringLocalizerFactory { get; } + + public SystemGroupSettingDefinitionProvider( + ITimezoneProvider timezoneProvider, + IStringLocalizerFactory stringLocalizerFactory, + IOptions localizationOptions) + { + TimezoneProvider = timezoneProvider; + StringLocalizerFactory = stringLocalizerFactory; + LocalizationOptions = localizationOptions.Value; + } + + public override void Define(ISettingDefinitionContext context) + { + SetSystemSettingGroup(context); + SetEmailSettingGroup(context); + } + + private void SetSystemSettingGroup(ISettingDefinitionContext context) + { + context.GetOrNull(LocalizationSettingNames.DefaultLanguage) + ?.WithGroup(GroupName, L("Settings:System"), order: 0) + ?.WithParent("Language", L("Settings:System.Language"), order: 0) + ?.WithOrder(0) + ?.WithOptions(LocalizationOptions.Languages.Select(l => new NameValue(l.DisplayName, l.CultureName))) + ?.ReplaceProviders( + DefaultValueSettingValueProvider.ProviderName, + ConfigurationSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName); + + var timezoneSetting = context.GetOrNull(TimingSettingNames.TimeZone); + if (timezoneSetting != null) + { + var stringLocalizer = StringLocalizerFactory.Create(); + var timezones = TimeZoneHelper.GetTimezones(TimezoneProvider.GetIanaTimezones()); + timezones.Insert(0, new NameValue + { + Name = stringLocalizer["DefaultTimeZone"], + Value = "Unspecified" + }); + + timezoneSetting + .WithGroup( + GroupName, + L("Settings:System"), + order: 0, + requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.TimeZone]) + .WithParent("Timing", L("Settings:System.Timing"), order: 0) + .WithOrder(1) + .WithOptions(timezones) + .ReplaceProviders( + DefaultValueSettingValueProvider.ProviderName, + ConfigurationSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName); + } + } + + private static void SetEmailSettingGroup(ISettingDefinitionContext context) + { + context.GetOrNull(EmailSettingNames.DefaultFromAddress) + ?.WithGroup( + "Emailing", + L("Settings:Emailing"), + order: 1, + requiredFeatures: [SettingManagementFeatures.Enable, SettingManagementFeatures.AllowChangingEmailSettings], + requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.Emailing]) + ?.WithParent( + "Default", + L("Settings:Emailing.Default"), + order: 0) + ?.WithOrder(0) + ?.WithValueType(ValueType.String) + ?.ReplaceProviders( + DefaultValueSettingValueProvider.ProviderName, + ConfigurationSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName); + context.GetOrNull(EmailSettingNames.DefaultFromDisplayName) + ?.WithGroup( + "Emailing", + L("Settings:Emailing"), + order: 1, + requiredFeatures: [SettingManagementFeatures.Enable, SettingManagementFeatures.AllowChangingEmailSettings], + requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.Emailing]) + ?.WithParent( + "Default", + L("Settings:Emailing.Default"), + order: 0) + ?.WithOrder(1) + ?.WithValueType(ValueType.String) + ?.ReplaceProviders( + DefaultValueSettingValueProvider.ProviderName, + ConfigurationSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName); + + context.GetOrNull(EmailSettingNames.Smtp.Domain) + ?.WithGroup( + "Emailing", + L("Settings:Emailing"), + order: 1, + requiredFeatures: [SettingManagementFeatures.Enable, SettingManagementFeatures.AllowChangingEmailSettings], + requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.Emailing]) + ?.WithParent( + "Smtp", + L("Settings:Emailing.Smtp"), + order: 1, + requiredPermissions: [AbpSettingManagementPermissions.Settings.Manager]) + ?.WithOrder(0) + ?.WithValueType(ValueType.String) + ?.ReplaceProviders( + DefaultValueSettingValueProvider.ProviderName, + ConfigurationSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName); + context.GetOrNull(EmailSettingNames.Smtp.Host) + ?.WithGroup( + "Emailing", + L("Settings:Emailing"), + order: 1, + requiredFeatures: [SettingManagementFeatures.Enable, SettingManagementFeatures.AllowChangingEmailSettings], + requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.Emailing]) + ?.WithParent( + "Smtp", + L("Settings:Emailing.Smtp"), + order: 1, + requiredPermissions: [AbpSettingManagementPermissions.Settings.Manager]) + ?.WithOrder(1) + ?.WithValueType(ValueType.String) + ?.ReplaceProviders( + DefaultValueSettingValueProvider.ProviderName, + ConfigurationSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName); + context.GetOrNull(EmailSettingNames.Smtp.Port) + ?.WithGroup( + "Emailing", + L("Settings:Emailing"), + order: 1, + requiredFeatures: [SettingManagementFeatures.Enable, SettingManagementFeatures.AllowChangingEmailSettings], + requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.Emailing]) + ?.WithParent( + "Smtp", + L("Settings:Emailing.Smtp"), + order: 1, + requiredPermissions: [AbpSettingManagementPermissions.Settings.Manager]) + ?.WithOrder(2) + ?.WithValueType(ValueType.Number) + ?.ReplaceProviders( + DefaultValueSettingValueProvider.ProviderName, + ConfigurationSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName); + context.GetOrNull(EmailSettingNames.Smtp.UserName) + ?.WithGroup( + "Emailing", + L("Settings:Emailing"), + order: 1, + requiredFeatures: [SettingManagementFeatures.Enable, SettingManagementFeatures.AllowChangingEmailSettings], + requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.Emailing]) + ?.WithParent( + "Smtp", + L("Settings:Emailing.Smtp"), + order: 1, + requiredPermissions: [AbpSettingManagementPermissions.Settings.Manager]) + ?.WithOrder(3) + ?.WithValueType(ValueType.String) + ?.ReplaceProviders( + DefaultValueSettingValueProvider.ProviderName, + ConfigurationSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName); + context.GetOrNull(EmailSettingNames.Smtp.Password) + ?.WithGroup( + "Emailing", + L("Settings:Emailing"), + order: 1, + requiredFeatures: [SettingManagementFeatures.Enable, SettingManagementFeatures.AllowChangingEmailSettings], + requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.Emailing]) + ?.WithParent( + "Smtp", + L("Settings:Emailing.Smtp"), + order: 1, + requiredPermissions: [AbpSettingManagementPermissions.Settings.Manager]) + ?.WithOrder(4) + ?.WithValueType(ValueType.String) + ?.ReplaceProviders( + DefaultValueSettingValueProvider.ProviderName, + ConfigurationSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName); + context.GetOrNull(EmailSettingNames.Smtp.EnableSsl) + ?.WithGroup( + "Emailing", + L("Settings:Emailing"), + order: 1, + requiredFeatures: [SettingManagementFeatures.Enable, SettingManagementFeatures.AllowChangingEmailSettings], + requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.Emailing]) + ?.WithParent( + "Smtp", + L("Settings:Emailing.Smtp"), + order: 1, + requiredPermissions: [AbpSettingManagementPermissions.Settings.Manager]) + ?.WithOrder(5) + ?.WithValueType(ValueType.Boolean) + ?.ReplaceProviders( + DefaultValueSettingValueProvider.ProviderName, + ConfigurationSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName); + context.GetOrNull(EmailSettingNames.Smtp.UseDefaultCredentials) + ?.WithGroup( + "Emailing", + L("Settings:Emailing"), + order: 1, + requiredFeatures: [SettingManagementFeatures.Enable, SettingManagementFeatures.AllowChangingEmailSettings], + requiredPermissions: [Volo.Abp.SettingManagement.SettingManagementPermissions.Emailing]) + ?.WithParent( + "Smtp", + L("Settings:Emailing.Smtp"), + order: 1, + requiredPermissions: [AbpSettingManagementPermissions.Settings.Manager]) + ?.WithOrder(6) + ?.WithValueType(ValueType.Boolean) + ?.ReplaceProviders( + DefaultValueSettingValueProvider.ProviderName, + ConfigurationSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName); + } + + public static LocalizableString L(string name) + { + return LocalizableString.Create(name); + } +} diff --git a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/Settings/AccountSettingDefinitionProvider.cs b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/Settings/AccountSettingDefinitionProvider.cs index 40b28f7d5..54476f79e 100644 --- a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/Settings/AccountSettingDefinitionProvider.cs +++ b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/Settings/AccountSettingDefinitionProvider.cs @@ -8,6 +8,8 @@ namespace LY.MicroService.BackendAdmin.Settings; // 后台管理项目不引用 Volo.Abp.Account.Application模块,只能自建一个配置 public class AccountSettingDefinitionProvider : SettingDefinitionProvider { + private const string GroupName = "Identity"; + private const int GroupOrder = 10; public override void Define(ISettingDefinitionContext context) { context.Add( @@ -18,10 +20,14 @@ public class AccountSettingDefinitionProvider : SettingDefinitionProvider L("Description:Abp.Account.IsSelfRegistrationEnabled"), isVisibleToClients: true) .WithProviders( - DefaultValueSettingValueProvider.ProviderName, - ConfigurationSettingValueProvider.ProviderName, - GlobalSettingValueProvider.ProviderName, - TenantSettingValueProvider.ProviderName) + DefaultValueSettingValueProvider.ProviderName, + ConfigurationSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName) + .WithGroup(GroupName, L("Settings:Identity"), GroupOrder) + .WithParent("Account", L("Settings:Identity.Account"), order: 0) + .WithOrder(1) + .WithValueType(ValueType.Boolean) ); context.Add( @@ -32,10 +38,14 @@ public class AccountSettingDefinitionProvider : SettingDefinitionProvider L("Description:Abp.Account.EnableLocalLogin"), isVisibleToClients: true) .WithProviders( - DefaultValueSettingValueProvider.ProviderName, - ConfigurationSettingValueProvider.ProviderName, - GlobalSettingValueProvider.ProviderName, - TenantSettingValueProvider.ProviderName) + DefaultValueSettingValueProvider.ProviderName, + ConfigurationSettingValueProvider.ProviderName, + GlobalSettingValueProvider.ProviderName, + TenantSettingValueProvider.ProviderName) + .WithGroup(GroupName, L("Settings:Identity"), GroupOrder) + .WithParent("Account", L("Settings:Identity.Account"), order: 0) + .WithOrder(0) + .WithValueType(ValueType.Boolean) ); }