71 changed files with 1224 additions and 191 deletions
@ -0,0 +1,76 @@ |
|||
# 10.2.0 - 10.4.0 |
|||
|
|||
## 模块变更 |
|||
|
|||
1. [身份标识模块] 增加不活跃用户通知/清理作业,实现了三个通知模板(账户保持活跃通知、账户停用通知、账户删除通知) |
|||
2. [身份标识模块] 增加不活跃用户实体 `IdentityUserInactive` 需要执行数据库迁移 |
|||
3. [身份标识模块] 增加用户登录Url设置定义: `Abp.Identity.Link.UserLoginUri`, 用于在外部系统中关联用户登录页 |
|||
4. [身份认证模块] 增加用户登录Url定义: `Abp.Account.UserLogin` |
|||
5. [身份认证模块] 增加关联用户登录功能, 可以实现跨租户用户关联, 切换关联用户登录 |
|||
6. [设置管理模块] 增加身份标识模块缺少的设置项: 启用防止密码重用、防止密码重用数量 |
|||
7. [设置基础模块] 增加设置定义分组、所属设置、优先级、依赖权限、依赖功能、选择项等常用结构扩展 |
|||
8. [设置管理模块] 重构设置管理应用服务接口, 通过预设定的设置定义分组、上下级关系等自动构成Dto结构 |
|||
|
|||
## 依赖项变更 |
|||
|
|||
| 库名称 | 原版本 | 现版本 | |
|||
| -------------------------------------------- | --------- | ------ | |
|||
| Microsoft.AspNetCore.* | 10.0.2 | 10.0.7 | |
|||
| Microsoft.Bcl.AsyncInterfaces | 10.0.2 | 10.0.7 | |
|||
| Microsoft.Data.Sqlite.Core | 10.0.0 | 10.0.7 | |
|||
| Microsoft.EntityFrameworkCore.* | 10.0.2 | 10.0.7 | |
|||
| Microting.EntityFrameworkCore.MySql | 10.0.3 | 10.0.7 | |
|||
| Microsoft.Extensions.* | 10.0.2 | 10.0.7 | |
|||
| OpenTelemetry.Extensions.Hosting | 1.14.0 | 1.15.3 | |
|||
| OpenTelemetry.Exporter.Console | 1.14.0 | 1.15.3 | |
|||
| OpenTelemetry.Exporter.OpenTelemetryProtocol | 1.14.0 | 1.15.3 | |
|||
| OpenTelemetry.Exporter.Zipkin | 1.14.0 | 1.15.3 | |
|||
| OpenTelemetry.Instrumentation.AspNetCore | 1.14.0 | 1.15.2 | |
|||
| OpenTelemetry.Instrumentation.Http | 1.14.0 | 1.15.1 | |
|||
| OpenTelemetry.Instrumentation.Quartz | 1.14.0-beta.2 | 1.15.1-beta.1 | |
|||
| OpenTelemetry.Instrumentation.Runtime | 1.14.0 | 1.15.1 | |
|||
| OpenTelemetry.Instrumentation.SqlClient | 1.14.0-beta.1 | 1.15.2 | |
|||
| OpenIddict.Server.DataProtection | 7.2.0 | 7.5.0 | |
|||
| OpenIddict.Validation.DataProtection | 7.2.0 | 7.5.0 | |
|||
| System.Threading.Channels | 10.0.0 | 10.0.7 | |
|||
| Volo.Abp.* | 10.2.0 | 10.4.0 | |
|||
| Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite | 5.2.0 | 5.4.0 | |
|||
|
|||
|
|||
|
|||
## 数据库迁移 |
|||
|
|||
| Project Name | Database Provider | Scripts | EF Core Version | |
|||
| ------------------------ | ----------------- | ---------------------------------------------- | --------------- | |
|||
| aspire/AuthServer | PostgreSQL | 20260530060327_Add-Identity-User-Inactive | 10.0.2 | |
|||
| services/Single | MySQL | 20260529063257_Add-Identity-User-Inactive | 10.0.3 | |
|||
| services/Single | PostgreSQL | 20260530055941_Add-Identity-User-Inactive | 10.0.2 | |
|||
| services/Single | SqlServer | 20260530060009_Add-Identity-User-Inactive | 10.0.2 | |
|||
| services/AuthServer | MySQL | 20260530061141_Add-Identity-User-Inactive | 10.0.3 | |
|||
|
|||
|
|||
## 数据库连接字符串 |
|||
|
|||
| Module Name | ConnectionString Name | Example(MySQL) | |
|||
| ----------------------------- | ---------------------------- | ------------------------------------------------------------ | |
|||
| Default | Default | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| abp/Identity | AbpIdentity | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| abp/IdentityServer | AbpIdentityServer | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| abp/OpenIddict | AbpOpenIddict | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| abp/TenantManagement | AbpTenantManagement(AbpSaas) | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| abp/FeatureManagement | AbpFeatureManagement | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| abp/SettingManagement | AbpSettingManagement | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| abp/PermissionManagement | AbpPermissionManagement | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| labp/AIManagement | AbpAIManagement | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| labp/BlobManagement | AbpBlobManagement | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| labp/DataProtectionManagement | AbpDataProtectionManagement | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| labp/Gdpr | AbpGdpr | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| labp/Saas | AbpSaas | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| labp/LocalizationManagement | AbpLocalizationManagement | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| labp/TextTemplating | AbpTextTemplating | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| labp/Platform | AppPlatform | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| labp/MessageService | MessageService | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| labp/NotificationService | Notifications | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| labp/TaskManagement | TaskManagement | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| labp/WebhooksManagement | WebhooksManagement | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
| labp/Elsa | Workflow | Server=127.0.0.1;Database=abp;User Id=root;Password=123456;SslMode=None | |
|||
@ -0,0 +1,2 @@ |
|||
/** 启用企业微信认证 */ |
|||
export const WeixinWorkAuthEnable = 'Abp.Account.OAuth.WeCom.Enable'; |
|||
@ -1,9 +1,9 @@ |
|||
{ |
|||
"version": "10.2.0", |
|||
"name": "my-app-authserver", |
|||
"version": "10.4.0", |
|||
"name": "aspire-authserver", |
|||
"private": true, |
|||
"dependencies": { |
|||
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "5.2.0", |
|||
"@abp/qrcode": "10.2.0" |
|||
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "5.4.0", |
|||
"@abp/qrcode": "10.4.0" |
|||
} |
|||
} |
|||
@ -0,0 +1,120 @@ |
|||
using LINGYUN.Abp.Notifications; |
|||
using Microsoft.Extensions.Logging; |
|||
using Microsoft.Extensions.Logging.Abstractions; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.MultiTenancy; |
|||
using Volo.Abp.Users; |
|||
|
|||
namespace LINGYUN.Abp.MicroService.MessageService.DataSeeds; |
|||
|
|||
public class NotificationDataSeeder : ITransientDependency |
|||
{ |
|||
public ILogger<NotificationDataSeeder> Logger { protected get; set; } |
|||
protected INotificationSender NotificationSender { get; } |
|||
protected INotificationSubscriptionManager NotificationSubscriptionManager { get; } |
|||
public NotificationDataSeeder( |
|||
INotificationSender notificationSender, |
|||
INotificationSubscriptionManager notificationSubscriptionManager) |
|||
{ |
|||
NotificationSender = notificationSender; |
|||
NotificationSubscriptionManager = notificationSubscriptionManager; |
|||
|
|||
Logger = NullLogger<NotificationDataSeeder>.Instance; |
|||
} |
|||
|
|||
public virtual async Task SeedAsync(DataSeedContext context) |
|||
{ |
|||
await SubscribeDefaultNotifierAsync(context); |
|||
await SeedWelcomeNotifierAsync(context); |
|||
} |
|||
|
|||
public async virtual Task SubscribeDefaultNotifierAsync(DataSeedContext context) |
|||
{ |
|||
if (!context.Properties.TryGetValue(MessageServiceDataSeedConsts.AdminUserIdPropertyName, out var userIdString) || |
|||
!Guid.TryParse(userIdString?.ToString(), out var adminUserId)) |
|||
{ |
|||
|
|||
return; |
|||
} |
|||
var adminUserName = context.Properties.GetOrDefault(MessageServiceDataSeedConsts.AdminUserNamePropertyName)?.ToString() |
|||
?? MessageServiceDataSeedConsts.AdminUserNameDefaultValue; |
|||
var userIdentifer = new UserIdentifier(adminUserId, adminUserName); |
|||
// 订阅内置通知
|
|||
await NotificationSubscriptionManager |
|||
.SubscribeAsync( |
|||
context.TenantId, |
|||
userIdentifer, |
|||
DefaultNotifications.SystemNotice); |
|||
await NotificationSubscriptionManager |
|||
.SubscribeAsync( |
|||
context.TenantId, |
|||
userIdentifer, |
|||
DefaultNotifications.OnsideNotice); |
|||
await NotificationSubscriptionManager |
|||
.SubscribeAsync( |
|||
context.TenantId, |
|||
userIdentifer, |
|||
DefaultNotifications.ActivityNotice); |
|||
// 订阅用户欢迎消息
|
|||
await NotificationSubscriptionManager |
|||
.SubscribeAsync( |
|||
context.TenantId, |
|||
userIdentifer, |
|||
UserNotificationNames.WelcomeToApplication); |
|||
} |
|||
|
|||
public async virtual Task SeedWelcomeNotifierAsync(DataSeedContext context) |
|||
{ |
|||
try |
|||
{ |
|||
if (!context.TenantId.HasValue) |
|||
{ |
|||
return; |
|||
} |
|||
if (!context.Properties.TryGetValue(MessageServiceDataSeedConsts.AdminUserIdPropertyName, out var userIdString) || |
|||
!Guid.TryParse(userIdString?.ToString(), out var adminUserId)) |
|||
{ |
|||
return; |
|||
} |
|||
var adminEmailAddress = context.Properties.GetOrDefault(MessageServiceDataSeedConsts.AdminEmailPropertyName)?.ToString() |
|||
?? MessageServiceDataSeedConsts.AdminEmailDefaultValue; |
|||
var adminUserName = context.Properties.GetOrDefault(MessageServiceDataSeedConsts.AdminUserNamePropertyName)?.ToString() |
|||
?? MessageServiceDataSeedConsts.AdminUserNameDefaultValue; |
|||
|
|||
var tenantAdminUserIdentifier = new UserIdentifier(adminUserId, adminEmailAddress); |
|||
|
|||
// 租户管理员订阅事件
|
|||
await NotificationSubscriptionManager |
|||
.SubscribeAsync( |
|||
context.TenantId, |
|||
tenantAdminUserIdentifier, |
|||
TenantNotificationNames.NewTenantRegistered); |
|||
|
|||
Logger.LogInformation("publish new tenant notification.."); |
|||
await NotificationSender.SendNofiterAsync( |
|||
TenantNotificationNames.NewTenantRegistered, |
|||
new NotificationTemplate( |
|||
TenantNotificationNames.NewTenantRegistered, |
|||
formUser: adminEmailAddress, |
|||
data: new Dictionary<string, object> |
|||
{ |
|||
{ "name", adminUserName }, |
|||
{ "email", adminEmailAddress }, |
|||
{ "id", context.TenantId }, |
|||
}), |
|||
tenantAdminUserIdentifier, |
|||
context.TenantId, |
|||
NotificationSeverity.Success); |
|||
|
|||
Logger.LogInformation("tenant administrator subscribes to new tenant events.."); |
|||
} |
|||
catch (Exception ex) |
|||
{ |
|||
Logger.LogWarning(ex, "Failed to send the tenant initialization notification."); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,10 @@ |
|||
namespace LINGYUN.Abp.MicroService.MessageService; |
|||
|
|||
public static class MessageServiceDataSeedConsts |
|||
{ |
|||
public const string AdminUserIdPropertyName = "AdminUserId"; |
|||
public const string AdminEmailPropertyName = "AdminEmail"; |
|||
public const string AdminEmailDefaultValue = "admin@abp.io"; |
|||
public const string AdminUserNamePropertyName = "AdminUserName"; |
|||
public const string AdminUserNameDefaultValue = "admin"; |
|||
} |
|||
@ -0,0 +1,33 @@ |
|||
using LINGYUN.Abp.MicroService.MessageService.DataSeeds; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.MultiTenancy; |
|||
|
|||
namespace LINGYUN.Abp.MicroService.MessageService; |
|||
|
|||
public class MessageServiceDataSeeder : ITransientDependency |
|||
{ |
|||
protected NotificationDataSeeder NotificationDataSeeder { get; } |
|||
protected ICurrentTenant CurrentTenant { get; } |
|||
public MessageServiceDataSeeder( |
|||
ICurrentTenant currentTenant, |
|||
NotificationDataSeeder notificationDataSeeder) |
|||
{ |
|||
CurrentTenant = currentTenant; |
|||
NotificationDataSeeder = notificationDataSeeder; |
|||
} |
|||
|
|||
public async virtual Task SeedAsync(DataSeedContext context) |
|||
{ |
|||
using (CurrentTenant.Change(context.TenantId)) |
|||
{ |
|||
await SeedNotificationAsync(context); |
|||
} |
|||
} |
|||
|
|||
private async Task SeedNotificationAsync(DataSeedContext context) |
|||
{ |
|||
await NotificationDataSeeder.SeedAsync(context); |
|||
} |
|||
} |
|||
@ -0,0 +1,253 @@ |
|||
using Microsoft.Extensions.Localization; |
|||
using Microsoft.Extensions.Options; |
|||
using Volo.Abp.Emailing; |
|||
using Volo.Abp.Settings; |
|||
using Volo.Abp.Timing; |
|||
using ValueType = Volo.Abp.Settings.ValueType; |
|||
|
|||
namespace LY.MicroService.Applications.Single.Settings; |
|||
|
|||
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<AbpLocalizationOptions> 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<string>(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<AbpSettingManagementResource>(); |
|||
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<AbpSettingManagementResource>(name); |
|||
} |
|||
} |
|||
@ -0,0 +1,260 @@ |
|||
using LINGYUN.Abp.SettingManagement; |
|||
using Microsoft.Extensions.Localization; |
|||
using Microsoft.Extensions.Options; |
|||
using System.Linq; |
|||
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 LY.MicroService.BackendAdmin.Settings; |
|||
|
|||
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<AbpLocalizationOptions> 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<string>(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<AbpSettingManagementResource>(); |
|||
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<AbpSettingManagementResource>(name); |
|||
} |
|||
} |
|||
|
|||
Loading…
Reference in new issue