diff --git a/src/PearAdmin.AbpTemplate.Admin/AbpTemplateAdminModule.cs b/src/PearAdmin.AbpTemplate.Admin/AbpTemplateAdminModule.cs index 428976ea6ad8ad67f7b1c297e79317f20f8de6cc..f8de45632c8b692a771d6505da231cea58f4e7e5 100644 --- a/src/PearAdmin.AbpTemplate.Admin/AbpTemplateAdminModule.cs +++ b/src/PearAdmin.AbpTemplate.Admin/AbpTemplateAdminModule.cs @@ -4,6 +4,7 @@ using Abp.AspNetCore.SignalR; using Abp.Configuration.Startup; using Abp.Hangfire; using Abp.Hangfire.Configuration; +using Abp.MailKit; using Abp.Modules; using Abp.Reflection.Extensions; using Abp.Zero.Configuration; @@ -26,21 +27,26 @@ namespace PearAdmin.AbpTemplate.Admin typeof(AbpAspNetCoreModule), typeof(AbpAspNetCoreSignalRModule), typeof(AbpHangfireAspNetCoreModule), - typeof(AbpTemplateMiniProgramModule) + typeof(AbpTemplateMiniProgramModule), + typeof(AbpMailKitModule) )] public class AbpTemplateAdminModule : AbpModule { private readonly IWebHostEnvironment _env; private readonly IConfigurationRoot _appConfiguration; - public AbpTemplateAdminModule(IWebHostEnvironment env) + public AbpTemplateAdminModule( + IWebHostEnvironment env, + AbpTemplateEntityFrameworkModule abpProjectNameEntityFrameworkModule) { _env = env; _appConfiguration = env.GetAppConfiguration(); + abpProjectNameEntityFrameworkModule.SkipDbSeed = true; } public override void PreInitialize() { + // 链接字符串设置 Configuration.DefaultNameOrConnectionString = _appConfiguration.GetConnectionString(AbpTemplateCoreConsts.ConnectionStringName); // 本地化内容存储到数据库 @@ -49,8 +55,10 @@ namespace PearAdmin.AbpTemplate.Admin // 显示所有错误信息到客户端 Configuration.Modules.AbpWebCommon().SendAllExceptionsToClients = false; + // 菜单栏设置 Configuration.Navigation.Providers.Add(); + // 后台任务使用Hangfire Configuration.BackgroundJobs.UseHangfire(); } @@ -68,6 +76,13 @@ namespace PearAdmin.AbpTemplate.Admin ConfigureExternalAuthProviders(); } + private void SetAppFolders() + { + var appFolders = IocManager.Resolve(); + + appFolders.WebLogsFolder = Path.Combine(_env.ContentRootPath, $"App_Data{Path.DirectorySeparatorChar}Logs"); + } + private void ConfigureExternalAuthProviders() { var externalAuthConfiguration = IocManager.Resolve(); @@ -87,12 +102,5 @@ namespace PearAdmin.AbpTemplate.Admin { base.Shutdown(); } - - private void SetAppFolders() - { - var appFolders = IocManager.Resolve(); - - appFolders.WebLogsFolder = Path.Combine(_env.ContentRootPath, $"App_Data{Path.DirectorySeparatorChar}Logs"); - } } } diff --git a/src/PearAdmin.AbpTemplate.Admin/PearAdmin.AbpTemplate.Admin.csproj b/src/PearAdmin.AbpTemplate.Admin/PearAdmin.AbpTemplate.Admin.csproj index 3f3ae0a484038e8badb825ee7f1e395a2b6f00e6..a531ff034d90b883f4e694a34a25ebc18272afff 100644 --- a/src/PearAdmin.AbpTemplate.Admin/PearAdmin.AbpTemplate.Admin.csproj +++ b/src/PearAdmin.AbpTemplate.Admin/PearAdmin.AbpTemplate.Admin.csproj @@ -25,6 +25,7 @@ + diff --git a/src/PearAdmin.AbpTemplate.Admin/Views/TenantSettings/Index.cshtml b/src/PearAdmin.AbpTemplate.Admin/Views/TenantSettings/Index.cshtml index 9a00f0e0396377d885a1c3817dbe023da073447c..09559c664014151a6f29410455afaae2844a3a32 100644 --- a/src/PearAdmin.AbpTemplate.Admin/Views/TenantSettings/Index.cshtml +++ b/src/PearAdmin.AbpTemplate.Admin/Views/TenantSettings/Index.cshtml @@ -79,6 +79,7 @@ saveAllSettings: function () { var field = { companySettings: $("#companySettings").serializeObject(), + email: $("#emailSettings").serializeObject() }; var waitIndex = parent.layer.load(2); diff --git a/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/Dto/HostOtherSettingsEditDto.cs b/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/Dto/HostManagementSettingsEditDto.cs similarity index 33% rename from src/PearAdmin.AbpTemplate.Application/Host/HostSettings/Dto/HostOtherSettingsEditDto.cs rename to src/PearAdmin.AbpTemplate.Application/Host/HostSettings/Dto/HostManagementSettingsEditDto.cs index 9fdaf4d7e7d6288e8274edec83f2624c02b20e6e..1c725b84b14f8327ff31be29a9d9caa411ca6a29 100644 --- a/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/Dto/HostOtherSettingsEditDto.cs +++ b/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/Dto/HostManagementSettingsEditDto.cs @@ -1,7 +1,8 @@ namespace PearAdmin.AbpTemplate.Host.HostSettings.Dto { - public class HostOtherSettingsEditDto + public class HostManagementSettingsEditDto { - public bool IsQuickThemeSelectEnabled { get; set; } + public bool CompanyName { get; set; } + public bool CompanyAddress { get; set; } } } \ No newline at end of file diff --git a/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/Dto/HostSettingsEditDto.cs b/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/Dto/HostSettingsEditDto.cs index 73ec67c11970b9c5b7b473fe531f75e8861edcdd..425f49992a121fb50de53e508082c15d71b4ba1a 100644 --- a/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/Dto/HostSettingsEditDto.cs +++ b/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/Dto/HostSettingsEditDto.cs @@ -8,11 +8,6 @@ namespace PearAdmin.AbpTemplate.Host.HostSettings.Dto public GeneralSettingsEditDto General { get; set; } [Required] - public HostUserManagementSettingsEditDto UserManagement { get; set; } - - [Required] - public TenantManagementSettingsEditDto TenantManagement { get; set; } - - public HostOtherSettingsEditDto OtherSettings { get; set; } + public HostManagementSettingsEditDto HostManagement { get; set; } } } \ No newline at end of file diff --git a/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/Dto/HostUserManagementSettingsEditDto.cs b/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/Dto/HostUserManagementSettingsEditDto.cs deleted file mode 100644 index fe81ea90754371b8e8afef081cdba9f4b4efa3ea..0000000000000000000000000000000000000000 --- a/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/Dto/HostUserManagementSettingsEditDto.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace PearAdmin.AbpTemplate.Host.HostSettings.Dto -{ - public class HostUserManagementSettingsEditDto - { - public bool IsEmailConfirmationRequiredForLogin { get; set; } - - public bool SmsVerificationEnabled { get; set; } - - public bool IsCookieConsentEnabled { get; set; } - - public bool IsQuickThemeSelectEnabled { get; set; } - - public bool UseCaptchaOnLogin { get; set; } - - public bool AllowUsingGravatarProfilePicture { get; set; } - - public SessionTimeOutSettingsEditDto SessionTimeOutSettings { get; set; } - } -} \ No newline at end of file diff --git a/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/Dto/SessionTimeOutSettingsEditDto.cs b/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/Dto/SessionTimeOutSettingsEditDto.cs deleted file mode 100644 index fd1e1896f4be599180fe168b9270530d5c297003..0000000000000000000000000000000000000000 --- a/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/Dto/SessionTimeOutSettingsEditDto.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace PearAdmin.AbpTemplate.Host.HostSettings.Dto -{ - public class SessionTimeOutSettingsEditDto - { - public bool IsEnabled { get; set; } - - [Range(10, int.MaxValue)] - public int TimeOutSecond { get; set; } - - [Range(10, int.MaxValue)] - public int ShowTimeOutNotificationSecond { get; set; } - - public bool ShowLockScreenWhenTimedOut { get; set; } - } -} diff --git a/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/Dto/TenantManagementSettingsEditDto.cs b/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/Dto/TenantManagementSettingsEditDto.cs deleted file mode 100644 index 68c412e28ff8571a1b9f7a1d8498318e154a2cfe..0000000000000000000000000000000000000000 --- a/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/Dto/TenantManagementSettingsEditDto.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace PearAdmin.AbpTemplate.Host.HostSettings.Dto -{ - public class TenantManagementSettingsEditDto - { - public bool AllowSelfRegistration { get; set; } - - public bool IsNewRegisteredTenantActiveByDefault { get; set; } - - public bool UseCaptchaOnRegistration { get; set; } - - public int? DefaultEditionId { get; set; } - } -} \ No newline at end of file diff --git a/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/HostSettingsAppService.cs b/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/HostSettingsAppService.cs index 0844c24b93d75087dbea29f36c691bedee30dc13..03bade88051640a74f131c8f8e5d4be122ff5ac0 100644 --- a/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/HostSettingsAppService.cs +++ b/src/PearAdmin.AbpTemplate.Application/Host/HostSettings/HostSettingsAppService.cs @@ -1,16 +1,12 @@ -using System; -using System.Threading.Tasks; +using System.Threading.Tasks; using Abp.Authorization; using Abp.Collections.Extensions; using Abp.Configuration; using Abp.Extensions; using Abp.Timing; -using Abp.Zero.Configuration; using PearAdmin.AbpTemplate.Authorization; -using PearAdmin.AbpTemplate.Configuration; -using PearAdmin.AbpTemplate.Editions; using PearAdmin.AbpTemplate.Host.HostSettings.Dto; -using PearAdmin.AbpTemplate.Security; +using PearAdmin.AbpTemplate.Settings; using PearAdmin.AbpTemplate.Timing; namespace PearAdmin.AbpTemplate.Host.HostSettings @@ -18,18 +14,12 @@ namespace PearAdmin.AbpTemplate.Host.HostSettings [AbpAuthorize(AppPermissionNames.Pages_SystemManagement_HostSettings)] public class HostSettingsAppService : AbpTemplateApplicationServiceBase, IHostSettingsAppService { - private readonly EditionManager _editionManager; private readonly ITimeZoneService _timeZoneService; - private readonly ISettingDefinitionManager _settingDefinitionManager; public HostSettingsAppService( - EditionManager editionManager, - ITimeZoneService timeZoneService, - ISettingDefinitionManager settingDefinitionManager) + ITimeZoneService timeZoneService) { - _editionManager = editionManager; _timeZoneService = timeZoneService; - _settingDefinitionManager = settingDefinitionManager; } #region Get Settings @@ -39,9 +29,7 @@ namespace PearAdmin.AbpTemplate.Host.HostSettings return new HostSettingsEditDto { General = await GetGeneralSettingsAsync(), - TenantManagement = await GetTenantManagementSettingsAsync(), - UserManagement = await GetUserManagementAsync(), - OtherSettings = await GetOtherSettingsAsync() + HostManagement = await GetHostManagementSettingsAsync() }; } @@ -54,8 +42,7 @@ namespace PearAdmin.AbpTemplate.Host.HostSettings TimezoneForComparison = timezone }; - var defaultTimeZoneId = - await _timeZoneService.GetDefaultTimezoneAsync(SettingScopes.Application, AbpSession.TenantId); + var defaultTimeZoneId = await _timeZoneService.GetDefaultTimezoneAsync(SettingScopes.Application, AbpSession.TenantId); if (settings.Timezone == defaultTimeZoneId) { settings.Timezone = string.Empty; @@ -64,83 +51,17 @@ namespace PearAdmin.AbpTemplate.Host.HostSettings return settings; } - private async Task GetTenantManagementSettingsAsync() + private async Task GetHostManagementSettingsAsync() { - var settings = new TenantManagementSettingsEditDto + var settings = new HostManagementSettingsEditDto { - AllowSelfRegistration = - await SettingManager.GetSettingValueAsync(AppSettingNames.TenantManagement.AllowSelfRegistration), - IsNewRegisteredTenantActiveByDefault = - await SettingManager.GetSettingValueAsync(AppSettingNames.TenantManagement - .IsNewRegisteredTenantActiveByDefault), - UseCaptchaOnRegistration = - await SettingManager.GetSettingValueAsync(AppSettingNames.TenantManagement - .UseCaptchaOnRegistration), + CompanyName = await SettingManager.GetSettingValueAsync(AppSettingNames.HostManagement.CompanyAddress), + CompanyAddress = await SettingManager.GetSettingValueAsync(AppSettingNames.HostManagement.CompanyName), }; - var defaultEditionId = - await SettingManager.GetSettingValueAsync(AppSettingNames.TenantManagement.DefaultEdition); - if (!string.IsNullOrEmpty(defaultEditionId) && - (await _editionManager.FindByIdAsync(Convert.ToInt32(defaultEditionId)) != null)) - { - settings.DefaultEditionId = Convert.ToInt32(defaultEditionId); - } - return settings; } - private async Task GetUserManagementAsync() - { - return new HostUserManagementSettingsEditDto - { - IsEmailConfirmationRequiredForLogin = - await SettingManager.GetSettingValueAsync(AbpZeroSettingNames.UserManagement - .IsEmailConfirmationRequiredForLogin), - SmsVerificationEnabled = - await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement.SmsVerificationEnabled), - IsCookieConsentEnabled = - await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement.IsCookieConsentEnabled), - IsQuickThemeSelectEnabled = - await SettingManager.GetSettingValueAsync( - AppSettingNames.UserManagement.IsQuickThemeSelectEnabled), - UseCaptchaOnLogin = - await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement.UseCaptchaOnLogin), - AllowUsingGravatarProfilePicture = - await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement - .AllowUsingGravatarProfilePicture), - SessionTimeOutSettings = new SessionTimeOutSettingsEditDto - { - IsEnabled = await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement - .SessionTimeOut.IsEnabled), - TimeOutSecond = - await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement.SessionTimeOut - .TimeOutSecond), - ShowTimeOutNotificationSecond = - await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement.SessionTimeOut - .ShowTimeOutNotificationSecond), - ShowLockScreenWhenTimedOut = - await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement.SessionTimeOut - .ShowLockScreenWhenTimedOut) - } - }; - } - - private async Task GetOtherSettingsAsync() - { - return new HostOtherSettingsEditDto() - { - IsQuickThemeSelectEnabled = - await SettingManager.GetSettingValueAsync( - AppSettingNames.UserManagement.IsQuickThemeSelectEnabled) - }; - } - - private async Task GetOneConcurrentLoginPerUserSetting() - { - return await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement - .AllowOneConcurrentLoginPerUser); - } - #endregion #region Update Settings @@ -148,17 +69,7 @@ namespace PearAdmin.AbpTemplate.Host.HostSettings public async Task UpdateAllSettings(HostSettingsEditDto input) { await UpdateGeneralSettingsAsync(input.General); - await UpdateTenantManagementAsync(input.TenantManagement); - await UpdateUserManagementSettingsAsync(input.UserManagement); - await UpdateOtherSettingsAsync(input.OtherSettings); - } - - private async Task UpdateOtherSettingsAsync(HostOtherSettingsEditDto input) - { - await SettingManager.ChangeSettingForApplicationAsync( - AppSettingNames.UserManagement.IsQuickThemeSelectEnabled, - input.IsQuickThemeSelectEnabled.ToString().ToLowerInvariant() - ); + await UpdateHostManagementAsync(input.HostManagement); } private async Task UpdateGeneralSettingsAsync(GeneralSettingsEditDto settings) @@ -179,114 +90,16 @@ namespace PearAdmin.AbpTemplate.Host.HostSettings } } - private async Task UpdateTenantManagementAsync(TenantManagementSettingsEditDto settings) + private async Task UpdateHostManagementAsync(HostManagementSettingsEditDto settings) { await SettingManager.ChangeSettingForApplicationAsync( - AppSettingNames.TenantManagement.AllowSelfRegistration, - settings.AllowSelfRegistration.ToString().ToLowerInvariant() - ); - - await SettingManager.ChangeSettingForApplicationAsync( - AppSettingNames.TenantManagement.IsNewRegisteredTenantActiveByDefault, - settings.IsNewRegisteredTenantActiveByDefault.ToString().ToLowerInvariant() + AppSettingNames.HostManagement.CompanyName, + settings.CompanyName.ToString().ToLowerInvariant() ); - await SettingManager.ChangeSettingForApplicationAsync( - AppSettingNames.TenantManagement.UseCaptchaOnRegistration, - settings.UseCaptchaOnRegistration.ToString().ToLowerInvariant() + AppSettingNames.HostManagement.CompanyAddress, + settings.CompanyAddress.ToString().ToLowerInvariant() ); - - await SettingManager.ChangeSettingForApplicationAsync( - AppSettingNames.TenantManagement.DefaultEdition, - settings.DefaultEditionId?.ToString() ?? "" - ); - } - - private async Task UpdateUserManagementSettingsAsync(HostUserManagementSettingsEditDto settings) - { - await SettingManager.ChangeSettingForApplicationAsync( - AbpZeroSettingNames.UserManagement.IsEmailConfirmationRequiredForLogin, - settings.IsEmailConfirmationRequiredForLogin.ToString().ToLowerInvariant() - ); - - await SettingManager.ChangeSettingForApplicationAsync( - AppSettingNames.UserManagement.SmsVerificationEnabled, - settings.SmsVerificationEnabled.ToString().ToLowerInvariant() - ); - - await SettingManager.ChangeSettingForApplicationAsync( - AppSettingNames.UserManagement.IsCookieConsentEnabled, - settings.IsCookieConsentEnabled.ToString().ToLowerInvariant() - ); - - await SettingManager.ChangeSettingForApplicationAsync( - AppSettingNames.UserManagement.UseCaptchaOnLogin, - settings.UseCaptchaOnLogin.ToString().ToLowerInvariant() - ); - - await SettingManager.ChangeSettingForApplicationAsync( - AppSettingNames.UserManagement.AllowUsingGravatarProfilePicture, - settings.AllowUsingGravatarProfilePicture.ToString().ToLowerInvariant() - ); - - await UpdateUserManagementSessionTimeOutSettingsAsync(settings.SessionTimeOutSettings); - } - - private async Task UpdateUserManagementSessionTimeOutSettingsAsync(SessionTimeOutSettingsEditDto settings) - { - await SettingManager.ChangeSettingForApplicationAsync( - AppSettingNames.UserManagement.SessionTimeOut.IsEnabled, - settings.IsEnabled.ToString().ToLowerInvariant() - ); - - await SettingManager.ChangeSettingForApplicationAsync( - AppSettingNames.UserManagement.SessionTimeOut.TimeOutSecond, - settings.TimeOutSecond.ToString() - ); - - await SettingManager.ChangeSettingForApplicationAsync( - AppSettingNames.UserManagement.SessionTimeOut.ShowTimeOutNotificationSecond, - settings.ShowTimeOutNotificationSecond.ToString() - ); - - await SettingManager.ChangeSettingForApplicationAsync( - AppSettingNames.UserManagement.SessionTimeOut.ShowLockScreenWhenTimedOut, - settings.ShowLockScreenWhenTimedOut.ToString() - ); - } - - private async Task UpdatePasswordComplexitySettingsAsync(PasswordComplexitySetting settings) - { - await SettingManager.ChangeSettingForApplicationAsync( - AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireDigit, - settings.RequireDigit.ToString() - ); - - await SettingManager.ChangeSettingForApplicationAsync( - AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireLowercase, - settings.RequireLowercase.ToString() - ); - - await SettingManager.ChangeSettingForApplicationAsync( - AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireNonAlphanumeric, - settings.RequireNonAlphanumeric.ToString() - ); - - await SettingManager.ChangeSettingForApplicationAsync( - AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireUppercase, - settings.RequireUppercase.ToString() - ); - - await SettingManager.ChangeSettingForApplicationAsync( - AbpZeroSettingNames.UserManagement.PasswordComplexity.RequiredLength, - settings.RequiredLength.ToString() - ); - } - - private async Task UpdateOneConcurrentLoginPerUserSettingAsync(bool allowOneConcurrentLoginPerUser) - { - await SettingManager.ChangeSettingForApplicationAsync( - AppSettingNames.UserManagement.AllowOneConcurrentLoginPerUser, allowOneConcurrentLoginPerUser.ToString()); } #endregion } diff --git a/src/PearAdmin.AbpTemplate.Application/MultiTenancy/TenantSettings/Dto/TenantSettingsEditDto.cs b/src/PearAdmin.AbpTemplate.Application/MultiTenancy/TenantSettings/Dto/TenantSettingsEditDto.cs index bb20050bc91d72e9e2d6b9311cb79b0dee44ac88..b21611674b19e9119b6d773c470ef42aeb81e9c8 100644 --- a/src/PearAdmin.AbpTemplate.Application/MultiTenancy/TenantSettings/Dto/TenantSettingsEditDto.cs +++ b/src/PearAdmin.AbpTemplate.Application/MultiTenancy/TenantSettings/Dto/TenantSettingsEditDto.cs @@ -2,17 +2,9 @@ { public class TenantSettingsEditDto { - //public GeneralSettingsEditDto General { get; set; } + public GeneralSettingsEditDto General { get; set; } - //[Required] - //public TenantUserManagementSettingsEditDto UserManagement { get; set; } - - //public TenantEmailSettingsEditDto Email { get; set; } - - //[Required] - //public SecuritySettingsEditDto Security { get; set; } - - //public TenantOtherSettingsEditDto OtherSettings { get; set; } + public TenantEmailSettingsEditDto Email { get; set; } public CompanySettingsEditDto CompanySettings { get; set; } diff --git a/src/PearAdmin.AbpTemplate.Application/MultiTenancy/TenantSettings/TenantSettingsAppService.cs b/src/PearAdmin.AbpTemplate.Application/MultiTenancy/TenantSettings/TenantSettingsAppService.cs index b9cb2a06ea31552896d0cbcede84ae7c2baed390..a83b76c53226379b135bd116533665fb2fe6ef76 100644 --- a/src/PearAdmin.AbpTemplate.Application/MultiTenancy/TenantSettings/TenantSettingsAppService.cs +++ b/src/PearAdmin.AbpTemplate.Application/MultiTenancy/TenantSettings/TenantSettingsAppService.cs @@ -3,15 +3,14 @@ using System.Threading.Tasks; using Abp.Authorization; using Abp.Configuration; using Abp.Configuration.Startup; +using Abp.Extensions; using Abp.Net.Mail; using Abp.Runtime.Security; using Abp.Runtime.Session; using Abp.Timing; -using Abp.Zero.Configuration; using PearAdmin.AbpTemplate.Authorization; -using PearAdmin.AbpTemplate.Configuration; using PearAdmin.AbpTemplate.MultiTenancy.TenantSetting.Dto; -using PearAdmin.AbpTemplate.Security; +using PearAdmin.AbpTemplate.Settings; using PearAdmin.AbpTemplate.Timing; namespace PearAdmin.AbpTemplate.MultiTenancy.TenantSetting @@ -35,17 +34,14 @@ namespace PearAdmin.AbpTemplate.MultiTenancy.TenantSetting { var settings = new TenantSettingsEditDto { - //UserManagement = await GetUserManagementSettingsAsync(), - //Security = await GetSecuritySettingsAsync(), - //OtherSettings = await GetOtherSettingsAsync(), - //Email = await GetEmailSettingsAsync(), + Email = await GetEmailSettingsAsync(), CompanySettings = await GetCompanySettingsAsync() }; - //if (!_multiTenancyConfig.IsEnabled || Clock.SupportsMultipleTimezone) - //{ - // settings.General = await GetGeneralSettingsAsync(); - //} + if (!_multiTenancyConfig.IsEnabled || Clock.SupportsMultipleTimezone) + { + settings.General = await GetGeneralSettingsAsync(); + } return settings; } @@ -83,8 +79,8 @@ namespace PearAdmin.AbpTemplate.MultiTenancy.TenantSetting { return new CompanySettingsEditDto() { - CompanyName = await SettingManager.GetSettingValueForApplicationAsync(AppSettingNames.HostManagement.CompanyName), - CompanyAddress = await SettingManager.GetSettingValueForApplicationAsync(AppSettingNames.HostManagement.CompanyAddress) + CompanyName = await SettingManager.GetSettingValueForApplicationAsync(AppSettingNames.TenantManagement.CompanyName), + CompanyAddress = await SettingManager.GetSettingValueForApplicationAsync(AppSettingNames.TenantManagement.CompanyAddress) }; } @@ -109,120 +105,35 @@ namespace PearAdmin.AbpTemplate.MultiTenancy.TenantSetting return settings; } - - private async Task GetUserManagementSettingsAsync() - { - return new TenantUserManagementSettingsEditDto - { - AllowSelfRegistration = await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement.AllowSelfRegistration), - IsNewRegisteredUserActiveByDefault = await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement.IsNewRegisteredUserActiveByDefault), - IsEmailConfirmationRequiredForLogin = await SettingManager.GetSettingValueAsync(AbpZeroSettingNames.UserManagement.IsEmailConfirmationRequiredForLogin), - UseCaptchaOnRegistration = await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement.UseCaptchaOnRegistration), - UseCaptchaOnLogin = await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement.UseCaptchaOnLogin), - IsCookieConsentEnabled = await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement.IsCookieConsentEnabled), - IsQuickThemeSelectEnabled = await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement.IsQuickThemeSelectEnabled), - AllowUsingGravatarProfilePicture = await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement.AllowUsingGravatarProfilePicture), - SessionTimeOutSettings = new SessionTimeOutSettingsEditDto() - { - IsEnabled = await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement.SessionTimeOut.IsEnabled), - TimeOutSecond = await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement.SessionTimeOut.TimeOutSecond), - ShowTimeOutNotificationSecond = await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement.SessionTimeOut.ShowTimeOutNotificationSecond), - ShowLockScreenWhenTimedOut = await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement.SessionTimeOut.ShowLockScreenWhenTimedOut) - } - }; - } - - private async Task GetSecuritySettingsAsync() - { - var passwordComplexitySetting = new PasswordComplexitySetting - { - RequireDigit = await SettingManager.GetSettingValueAsync(AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireDigit), - RequireLowercase = await SettingManager.GetSettingValueAsync(AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireLowercase), - RequireNonAlphanumeric = await SettingManager.GetSettingValueAsync(AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireNonAlphanumeric), - RequireUppercase = await SettingManager.GetSettingValueAsync(AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireUppercase), - RequiredLength = await SettingManager.GetSettingValueAsync(AbpZeroSettingNames.UserManagement.PasswordComplexity.RequiredLength) - }; - - var defaultPasswordComplexitySetting = new PasswordComplexitySetting - { - RequireDigit = await SettingManager.GetSettingValueForApplicationAsync(AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireDigit), - RequireLowercase = await SettingManager.GetSettingValueForApplicationAsync(AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireLowercase), - RequireNonAlphanumeric = await SettingManager.GetSettingValueForApplicationAsync(AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireNonAlphanumeric), - RequireUppercase = await SettingManager.GetSettingValueForApplicationAsync(AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireUppercase), - RequiredLength = await SettingManager.GetSettingValueForApplicationAsync(AbpZeroSettingNames.UserManagement.PasswordComplexity.RequiredLength) - }; - - return new SecuritySettingsEditDto - { - UseDefaultPasswordComplexitySettings = passwordComplexitySetting.Equals(defaultPasswordComplexitySetting), - PasswordComplexity = passwordComplexitySetting, - DefaultPasswordComplexity = defaultPasswordComplexitySetting, - UserLockOut = await GetUserLockOutSettingsAsync(), - AllowOneConcurrentLoginPerUser = await GetOneConcurrentLoginPerUserSetting() - }; - } - - private async Task GetOtherSettingsAsync() - { - return new TenantOtherSettingsEditDto() - { - IsQuickThemeSelectEnabled = await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement.IsQuickThemeSelectEnabled) - }; - } - - private async Task GetUserLockOutSettingsAsync() - { - return new UserLockOutSettingsEditDto - { - IsEnabled = await SettingManager.GetSettingValueAsync(AbpZeroSettingNames.UserManagement.UserLockOut.IsEnabled), - MaxFailedAccessAttemptsBeforeLockout = await SettingManager.GetSettingValueAsync(AbpZeroSettingNames.UserManagement.UserLockOut.MaxFailedAccessAttemptsBeforeLockout), - DefaultAccountLockoutSeconds = await SettingManager.GetSettingValueAsync(AbpZeroSettingNames.UserManagement.UserLockOut.DefaultAccountLockoutSeconds) - }; - } - - private async Task GetOneConcurrentLoginPerUserSetting() - { - return await SettingManager.GetSettingValueAsync(AppSettingNames.UserManagement.AllowOneConcurrentLoginPerUser); - } #endregion #region Update Settings public async Task UpdateAllSettings(TenantSettingsEditDto input) { - //await UpdateUserManagementSettingsAsync(input.UserManagement); - //await UpdateSecuritySettingsAsync(input.Security); - //await UpdateEmailSettingsAsync(input.Email); await UpdateCompanySettingsAsync(input.CompanySettings); - - //Time Zone - //if (Clock.SupportsMultipleTimezone) - //{ - // if (input.General.Timezone.IsNullOrEmpty()) - // { - // var defaultValue = await _timeZoneService.GetDefaultTimezoneAsync(SettingScopes.Tenant, AbpSession.TenantId); - // await SettingManager.ChangeSettingForTenantAsync(AbpSession.GetTenantId(), TimingSettingNames.TimeZone, defaultValue); - // } - // else - // { - // await SettingManager.ChangeSettingForTenantAsync(AbpSession.GetTenantId(), TimingSettingNames.TimeZone, input.General.Timezone); - // } - //} - - //if (!_multiTenancyConfig.IsEnabled) - //{ - // await UpdateOtherSettingsAsync(input.OtherSettings); - - // input.ValidateHostSettings(); - //} + await UpdateGeneralSettingsAsync(input); + await UpdateEmailSettingsAsync(input.Email); } - private async Task UpdateOtherSettingsAsync(TenantOtherSettingsEditDto input) + private async Task UpdateGeneralSettingsAsync(TenantSettingsEditDto input) { - await SettingManager.ChangeSettingForTenantAsync( - AbpSession.GetTenantId(), - AppSettingNames.UserManagement.IsQuickThemeSelectEnabled, - input.IsQuickThemeSelectEnabled.ToString().ToLowerInvariant() - ); + if (Clock.SupportsMultipleTimezone) + { + if (input.General.Timezone.IsNullOrEmpty()) + { + var defaultValue = await _timeZoneService.GetDefaultTimezoneAsync(SettingScopes.Tenant, AbpSession.TenantId); + await SettingManager.ChangeSettingForTenantAsync(AbpSession.GetTenantId(), TimingSettingNames.TimeZone, defaultValue); + } + else + { + await SettingManager.ChangeSettingForTenantAsync(AbpSession.GetTenantId(), TimingSettingNames.TimeZone, input.General.Timezone); + } + } + + if (!_multiTenancyConfig.IsEnabled) + { + input.ValidateHostSettings(); + } } private async Task UpdateCompanySettingsAsync(CompanySettingsEditDto input) @@ -270,141 +181,6 @@ namespace PearAdmin.AbpTemplate.MultiTenancy.TenantSetting await SettingManager.ChangeSettingForTenantAsync(AbpSession.GetTenantId(), EmailSettingNames.Smtp.EnableSsl, input.SmtpEnableSsl.ToString().ToLowerInvariant()); await SettingManager.ChangeSettingForTenantAsync(AbpSession.GetTenantId(), EmailSettingNames.Smtp.UseDefaultCredentials, input.SmtpUseDefaultCredentials.ToString().ToLowerInvariant()); } - - private async Task UpdateUserManagementSettingsAsync(TenantUserManagementSettingsEditDto settings) - { - await SettingManager.ChangeSettingForTenantAsync( - AbpSession.GetTenantId(), - AppSettingNames.UserManagement.AllowSelfRegistration, - settings.AllowSelfRegistration.ToString().ToLowerInvariant() - ); - - await SettingManager.ChangeSettingForTenantAsync( - AbpSession.GetTenantId(), - AppSettingNames.UserManagement.IsNewRegisteredUserActiveByDefault, - settings.IsNewRegisteredUserActiveByDefault.ToString().ToLowerInvariant() - ); - - await SettingManager.ChangeSettingForTenantAsync( - AbpSession.GetTenantId(), - AbpZeroSettingNames.UserManagement.IsEmailConfirmationRequiredForLogin, - settings.IsEmailConfirmationRequiredForLogin.ToString().ToLowerInvariant() - ); - - await SettingManager.ChangeSettingForTenantAsync( - AbpSession.GetTenantId(), - AppSettingNames.UserManagement.UseCaptchaOnRegistration, - settings.UseCaptchaOnRegistration.ToString().ToLowerInvariant() - ); - - await SettingManager.ChangeSettingForTenantAsync( - AbpSession.GetTenantId(), - AppSettingNames.UserManagement.UseCaptchaOnLogin, - settings.UseCaptchaOnLogin.ToString().ToLowerInvariant() - ); - - await SettingManager.ChangeSettingForTenantAsync( - AbpSession.GetTenantId(), - AppSettingNames.UserManagement.IsCookieConsentEnabled, - settings.IsCookieConsentEnabled.ToString().ToLowerInvariant() - ); - - await SettingManager.ChangeSettingForTenantAsync( - AbpSession.GetTenantId(), - AppSettingNames.UserManagement.AllowUsingGravatarProfilePicture, - settings.AllowUsingGravatarProfilePicture.ToString().ToLowerInvariant() - ); - - await UpdateUserManagementSessionTimeOutSettingsAsync(settings.SessionTimeOutSettings); - } - - private async Task UpdateUserManagementSessionTimeOutSettingsAsync(SessionTimeOutSettingsEditDto settings) - { - await SettingManager.ChangeSettingForTenantAsync( - AbpSession.GetTenantId(), - AppSettingNames.UserManagement.SessionTimeOut.IsEnabled, - settings.IsEnabled.ToString().ToLowerInvariant() - ); - await SettingManager.ChangeSettingForTenantAsync( - AbpSession.GetTenantId(), - AppSettingNames.UserManagement.SessionTimeOut.TimeOutSecond, - settings.TimeOutSecond.ToString() - ); - await SettingManager.ChangeSettingForTenantAsync( - AbpSession.GetTenantId(), - AppSettingNames.UserManagement.SessionTimeOut.ShowTimeOutNotificationSecond, - settings.ShowTimeOutNotificationSecond.ToString() - ); - await SettingManager.ChangeSettingForTenantAsync( - AbpSession.GetTenantId(), - AppSettingNames.UserManagement.SessionTimeOut.ShowLockScreenWhenTimedOut, - settings.ShowLockScreenWhenTimedOut.ToString() - ); - } - - private async Task UpdateSecuritySettingsAsync(SecuritySettingsEditDto settings) - { - if (settings.UseDefaultPasswordComplexitySettings) - { - await UpdatePasswordComplexitySettingsAsync(settings.DefaultPasswordComplexity); - } - else - { - await UpdatePasswordComplexitySettingsAsync(settings.PasswordComplexity); - } - - await UpdateUserLockOutSettingsAsync(settings.UserLockOut); - await UpdateOneConcurrentLoginPerUserSettingAsync(settings.AllowOneConcurrentLoginPerUser); - } - - private async Task UpdatePasswordComplexitySettingsAsync(PasswordComplexitySetting settings) - { - await SettingManager.ChangeSettingForTenantAsync( - AbpSession.GetTenantId(), - AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireDigit, - settings.RequireDigit.ToString() - ); - - await SettingManager.ChangeSettingForTenantAsync( - AbpSession.GetTenantId(), - AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireLowercase, - settings.RequireLowercase.ToString() - ); - - await SettingManager.ChangeSettingForTenantAsync( - AbpSession.GetTenantId(), - AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireNonAlphanumeric, - settings.RequireNonAlphanumeric.ToString() - ); - - await SettingManager.ChangeSettingForTenantAsync( - AbpSession.GetTenantId(), - AbpZeroSettingNames.UserManagement.PasswordComplexity.RequireUppercase, - settings.RequireUppercase.ToString() - ); - - await SettingManager.ChangeSettingForTenantAsync( - AbpSession.GetTenantId(), - AbpZeroSettingNames.UserManagement.PasswordComplexity.RequiredLength, - settings.RequiredLength.ToString() - ); - } - - private async Task UpdateUserLockOutSettingsAsync(UserLockOutSettingsEditDto settings) - { - await SettingManager.ChangeSettingForTenantAsync(AbpSession.GetTenantId(), AbpZeroSettingNames.UserManagement.UserLockOut.IsEnabled, settings.IsEnabled.ToString().ToLowerInvariant()); - await SettingManager.ChangeSettingForTenantAsync(AbpSession.GetTenantId(), AbpZeroSettingNames.UserManagement.UserLockOut.DefaultAccountLockoutSeconds, settings.DefaultAccountLockoutSeconds.ToString()); - await SettingManager.ChangeSettingForTenantAsync(AbpSession.GetTenantId(), AbpZeroSettingNames.UserManagement.UserLockOut.MaxFailedAccessAttemptsBeforeLockout, settings.MaxFailedAccessAttemptsBeforeLockout.ToString()); - } - - private async Task UpdateOneConcurrentLoginPerUserSettingAsync(bool allowOneConcurrentLoginPerUser) - { - if (_multiTenancyConfig.IsEnabled) - { - return; - } - await SettingManager.ChangeSettingForApplicationAsync(AppSettingNames.UserManagement.AllowOneConcurrentLoginPerUser, allowOneConcurrentLoginPerUser.ToString()); - } #endregion } } diff --git a/src/PearAdmin.AbpTemplate.Core/AbpTemplateCoreModule.cs b/src/PearAdmin.AbpTemplate.Core/AbpTemplateCoreModule.cs index b411130e691077d2d6c25a194ab838fc67ba178a..d33f39152ed1edf85cafbf675780fdb65586d5f2 100644 --- a/src/PearAdmin.AbpTemplate.Core/AbpTemplateCoreModule.cs +++ b/src/PearAdmin.AbpTemplate.Core/AbpTemplateCoreModule.cs @@ -13,6 +13,7 @@ using PearAdmin.AbpTemplate.Features; using PearAdmin.AbpTemplate.Localization; using PearAdmin.AbpTemplate.MultiTenancy; using PearAdmin.AbpTemplate.Notifications; +using PearAdmin.AbpTemplate.Settings; using PearAdmin.AbpTemplate.Social.Chat; using PearAdmin.AbpTemplate.Social.Friendships; using PearAdmin.AbpTemplate.Timing; diff --git a/src/PearAdmin.AbpTemplate.Core/AppProvider/Configuration/AppSettingNames.cs b/src/PearAdmin.AbpTemplate.Core/AppProvider/Configuration/AppSettingNames.cs deleted file mode 100644 index 760ac89427841aa8fde6895af32c8996e8e9545c..0000000000000000000000000000000000000000 --- a/src/PearAdmin.AbpTemplate.Core/AppProvider/Configuration/AppSettingNames.cs +++ /dev/null @@ -1,138 +0,0 @@ -namespace PearAdmin.AbpTemplate.Configuration -{ - /// - /// Defines string constants for setting names in the application. - /// See for setting definitions. - /// - public static class AppSettingNames - { - public static class HostManagement - { - public const string BillingLegalName = "App.HostManagement.BillingLegalName"; - public const string BillingAddress = "App.HostManagement.BillingAddress"; - public const string CompanyName = "App.HostManagement.CompanyName"; - public const string CompanyAddress = "App.HostManagement.CompanyAddress"; - } - - public static class DashboardCustomization - { - public const string Configuration = "App.DashboardCustomization.Configuration"; - } - - public static class UiManagement - { - public const string LayoutType = "App.UiManagement.LayoutType"; - public const string FixedBody = "App.UiManagement.Layout.FixedBody"; - public const string MobileFixedBody = "App.UiManagement.Layout.MobileFixedBody"; - - public const string Theme = "App.UiManagement.Theme"; - - public const string SearchActive = "App.UiManagement.MenuSearch"; - - public static class Header - { - public const string DesktopFixedHeader = "App.UiManagement.Header.DesktopFixedHeader"; - public const string MobileFixedHeader = "App.UiManagement.Header.MobileFixedHeader"; - public const string Skin = "App.UiManagement.Header.Skin"; - public const string MinimizeType = "App.UiManagement.Header.MinimizeType"; - public const string MenuArrows = "App.UiManagement.Header.MenuArrows"; - } - - public static class SubHeader - { - public const string Fixed = "App.UiManagement.SubHeader.Fixed"; - public const string Style = "App.UiManagement.SubHeader.Style"; - } - - public static class LeftAside - { - public const string Position = "App.UiManagement.Left.Position"; - public const string AsideSkin = "App.UiManagement.Left.AsideSkin"; - public const string FixedAside = "App.UiManagement.Left.FixedAside"; - public const string AllowAsideMinimizing = "App.UiManagement.Left.AllowAsideMinimizing"; - public const string DefaultMinimizedAside = "App.UiManagement.Left.DefaultMinimizedAside"; - public const string SubmenuToggle = "App.UiManagement.Left.SubmenuToggle"; - } - - public static class Footer - { - public const string FixedFooter = "App.UiManagement.Footer.FixedFooter"; - } - } - - public static class TenantManagement - { - public const string AllowSelfRegistration = "App.TenantManagement.AllowSelfRegistration"; - public const string IsNewRegisteredTenantActiveByDefault = "App.TenantManagement.IsNewRegisteredTenantActiveByDefault"; - public const string UseCaptchaOnRegistration = "App.TenantManagement.UseCaptchaOnRegistration"; - public const string DefaultEdition = "App.TenantManagement.DefaultEdition"; - public const string SubscriptionExpireNotifyDayCount = "App.TenantManagement.SubscriptionExpireNotifyDayCount"; - public const string BillingLegalName = "App.TenantManagement.BillingLegalName"; - public const string BillingAddress = "App.TenantManagement.BillingAddress"; - public const string BillingTaxVatNo = "App.TenantManagement.BillingTaxVatNo"; - } - - public static class UserManagement - { - public static class TwoFactorLogin - { - public const string IsGoogleAuthenticatorEnabled = "App.UserManagement.TwoFactorLogin.IsGoogleAuthenticatorEnabled"; - } - - public static class SessionTimeOut - { - public const string IsEnabled = "App.UserManagement.SessionTimeOut.IsEnabled"; - public const string TimeOutSecond = "App.UserManagement.SessionTimeOut.TimeOutSecond"; - public const string ShowTimeOutNotificationSecond = "App.UserManagement.SessionTimeOut.ShowTimeOutNotificationSecond"; - public const string ShowLockScreenWhenTimedOut = "App.UserManagement.SessionTimeOut.ShowLockScreenWhenTimedOut"; - } - - public const string AllowSelfRegistration = "App.UserManagement.AllowSelfRegistration"; - public const string IsNewRegisteredUserActiveByDefault = "App.UserManagement.IsNewRegisteredUserActiveByDefault"; - public const string UseCaptchaOnRegistration = "App.UserManagement.UseCaptchaOnRegistration"; - public const string UseCaptchaOnLogin = "App.UserManagement.UseCaptchaOnLogin"; - public const string SmsVerificationEnabled = "App.UserManagement.SmsVerificationEnabled"; - public const string IsCookieConsentEnabled = "App.UserManagement.IsCookieConsentEnabled"; - public const string IsQuickThemeSelectEnabled = "App.UserManagement.IsQuickThemeSelectEnabled"; - public const string AllowOneConcurrentLoginPerUser = "App.UserManagement.AllowOneConcurrentLoginPerUser"; - public const string AllowUsingGravatarProfilePicture = "App.UserManagement.AllowUsingGravatarProfilePicture"; - public const string UseGravatarProfilePicture = "App.UserManagement.UseGravatarProfilePicture"; - } - - public static class Email - { - public const string UseHostDefaultEmailSettings = "App.Email.UseHostDefaultEmailSettings"; - } - - public static class Recaptcha - { - public const string SiteKey = "Recaptcha.SiteKey"; - } - - public static class ExternalLoginProvider - { - public const string OpenIdConnectMappedClaims = "ExternalLoginProvider.OpenIdConnect.MappedClaims"; - public const string WsFederationMappedClaims = "ExternalLoginProvider.WsFederation.MappedClaims"; - - public static class Host - { - public const string Facebook = "ExternalLoginProvider.Facebook"; - public const string Google = "ExternalLoginProvider.Google"; - public const string Twitter = "ExternalLoginProvider.Twitter"; - public const string Microsoft = "ExternalLoginProvider.Microsoft"; - public const string OpenIdConnect = "ExternalLoginProvider.OpenIdConnect"; - public const string WsFederation = "ExternalLoginProvider.WsFederation"; - } - - public static class Tenant - { - public const string Facebook = "ExternalLoginProvider.Facebook.Tenant"; - public const string Google = "ExternalLoginProvider.Google.Tenant"; - public const string Twitter = "ExternalLoginProvider.Twitter.Tenant"; - public const string Microsoft = "ExternalLoginProvider.Microsoft.Tenant"; - public const string OpenIdConnect = "ExternalLoginProvider.OpenIdConnect.Tenant"; - public const string WsFederation = "ExternalLoginProvider.WsFederation.Tenant"; - } - } - } -} diff --git a/src/PearAdmin.AbpTemplate.Core/AppProvider/Configuration/AppSettingProvider.cs b/src/PearAdmin.AbpTemplate.Core/AppProvider/Configuration/AppSettingProvider.cs deleted file mode 100644 index 23de5a339f3e76218d36f2a081e27607e067b883..0000000000000000000000000000000000000000 --- a/src/PearAdmin.AbpTemplate.Core/AppProvider/Configuration/AppSettingProvider.cs +++ /dev/null @@ -1,217 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using Abp.Configuration; -using Abp.Localization; -using Abp.Net.Mail; -using Abp.Zero.Configuration; -using Microsoft.Extensions.Configuration; - -namespace PearAdmin.AbpTemplate.Configuration -{ - public class AppSettingProvider : SettingProvider - { - private readonly IConfigurationRoot _appConfiguration; - - public AppSettingProvider(IAppConfigurationAccessor configurationAccessor) - { - _appConfiguration = configurationAccessor.Configuration; - } - - public override IEnumerable GetSettingDefinitions(SettingDefinitionProviderContext context) - { - context.Manager.GetSettingDefinition(AbpZeroSettingNames.UserManagement.TwoFactorLogin.IsEnabled) - .DefaultValue = false.ToString().ToLowerInvariant(); - - ChangeEmailSettingScopes(context); - - return GetHostSettings() - .Union(GetTenantSettings()) - .Union(GetSharedSettings()) - .Union(GetDefaultThemeSettings()); - } - - private void ChangeEmailSettingScopes(SettingDefinitionProviderContext context) - { - if (!AbpTemplateCoreConsts.AllowTenantsToChangeEmailSettings) - { - context.Manager.GetSettingDefinition(EmailSettingNames.Smtp.Host).Scopes = SettingScopes.Application; - context.Manager.GetSettingDefinition(EmailSettingNames.Smtp.Port).Scopes = SettingScopes.Application; - context.Manager.GetSettingDefinition(EmailSettingNames.Smtp.UserName).Scopes = - SettingScopes.Application; - context.Manager.GetSettingDefinition(EmailSettingNames.Smtp.Password).Scopes = - SettingScopes.Application; - context.Manager.GetSettingDefinition(EmailSettingNames.Smtp.Domain).Scopes = SettingScopes.Application; - context.Manager.GetSettingDefinition(EmailSettingNames.Smtp.EnableSsl).Scopes = - SettingScopes.Application; - context.Manager.GetSettingDefinition(EmailSettingNames.Smtp.UseDefaultCredentials).Scopes = - SettingScopes.Application; - context.Manager.GetSettingDefinition(EmailSettingNames.DefaultFromAddress).Scopes = - SettingScopes.Application; - context.Manager.GetSettingDefinition(EmailSettingNames.DefaultFromDisplayName).Scopes = - SettingScopes.Application; - } - } - - private IEnumerable GetHostSettings() - { - return new[] - { - new SettingDefinition(AppSettingNames.TenantManagement.AllowSelfRegistration, - GetFromAppSettingNames(AppSettingNames.TenantManagement.AllowSelfRegistration, "true"), - isVisibleToClients: true), - new SettingDefinition(AppSettingNames.TenantManagement.IsNewRegisteredTenantActiveByDefault, - GetFromAppSettingNames(AppSettingNames.TenantManagement.IsNewRegisteredTenantActiveByDefault, "false")), - new SettingDefinition(AppSettingNames.TenantManagement.UseCaptchaOnRegistration, - GetFromAppSettingNames(AppSettingNames.TenantManagement.UseCaptchaOnRegistration, "true"), - isVisibleToClients: true), - new SettingDefinition(AppSettingNames.TenantManagement.DefaultEdition, - GetFromAppSettingNames(AppSettingNames.TenantManagement.DefaultEdition, "")), - new SettingDefinition(AppSettingNames.UserManagement.SmsVerificationEnabled, - GetFromAppSettingNames(AppSettingNames.UserManagement.SmsVerificationEnabled, "false"), - isVisibleToClients: true), - new SettingDefinition(AppSettingNames.TenantManagement.SubscriptionExpireNotifyDayCount, - GetFromAppSettingNames(AppSettingNames.TenantManagement.SubscriptionExpireNotifyDayCount, "7"), - isVisibleToClients: true), - new SettingDefinition(AppSettingNames.HostManagement.BillingLegalName, - GetFromAppSettingNames(AppSettingNames.HostManagement.BillingLegalName, "")), - new SettingDefinition(AppSettingNames.HostManagement.BillingAddress, - GetFromAppSettingNames(AppSettingNames.HostManagement.BillingAddress, "")), - new SettingDefinition(AppSettingNames.Recaptcha.SiteKey, GetFromSettings("Recaptcha:SiteKey"), - isVisibleToClients: true), - new SettingDefinition(AppSettingNames.UiManagement.Theme, - GetFromAppSettingNames(AppSettingNames.UiManagement.Theme, "default"), isVisibleToClients: true, - scopes: SettingScopes.All), - new SettingDefinition(AppSettingNames.HostManagement.CompanyName, - GetFromAppSettingNames(AppSettingNames.HostManagement.CompanyName)), - new SettingDefinition(AppSettingNames.HostManagement.CompanyAddress, - GetFromAppSettingNames(AppSettingNames.HostManagement.CompanyAddress)), - }; - } - - private IEnumerable GetTenantSettings() - { - return new[] - { - new SettingDefinition(AppSettingNames.UserManagement.AllowSelfRegistration, - GetFromAppSettingNames(AppSettingNames.UserManagement.AllowSelfRegistration, "true"), - scopes: SettingScopes.Tenant, isVisibleToClients: true), - new SettingDefinition(AppSettingNames.UserManagement.IsNewRegisteredUserActiveByDefault, - GetFromAppSettingNames(AppSettingNames.UserManagement.IsNewRegisteredUserActiveByDefault, "false"), - scopes: SettingScopes.Tenant), - new SettingDefinition(AppSettingNames.UserManagement.UseCaptchaOnRegistration, - GetFromAppSettingNames(AppSettingNames.UserManagement.UseCaptchaOnRegistration, "true"), - scopes: SettingScopes.Tenant, isVisibleToClients: true), - new SettingDefinition(AppSettingNames.TenantManagement.BillingLegalName, - GetFromAppSettingNames(AppSettingNames.TenantManagement.BillingLegalName, ""), - scopes: SettingScopes.Tenant), - new SettingDefinition(AppSettingNames.TenantManagement.BillingAddress, - GetFromAppSettingNames(AppSettingNames.TenantManagement.BillingAddress, ""), scopes: SettingScopes.Tenant), - new SettingDefinition(AppSettingNames.TenantManagement.BillingTaxVatNo, - GetFromAppSettingNames(AppSettingNames.TenantManagement.BillingTaxVatNo, ""), scopes: SettingScopes.Tenant), - new SettingDefinition(AppSettingNames.Email.UseHostDefaultEmailSettings, - GetFromAppSettingNames(AppSettingNames.Email.UseHostDefaultEmailSettings, AbpTemplateCoreConsts.MultiTenancyEnabled.ToString()), scopes: SettingScopes.Tenant) - }; - } - - private IEnumerable GetSharedSettings() - { - return new[] - { - new SettingDefinition(AppSettingNames.UserManagement.TwoFactorLogin.IsGoogleAuthenticatorEnabled, - GetFromAppSettingNames(AppSettingNames.UserManagement.TwoFactorLogin.IsGoogleAuthenticatorEnabled, "false"), - scopes: SettingScopes.Application | SettingScopes.Tenant, isVisibleToClients: true), - new SettingDefinition(AppSettingNames.UserManagement.IsCookieConsentEnabled, - GetFromAppSettingNames(AppSettingNames.UserManagement.IsCookieConsentEnabled, "false"), - scopes: SettingScopes.Application | SettingScopes.Tenant, isVisibleToClients: true), - new SettingDefinition(AppSettingNames.UserManagement.IsQuickThemeSelectEnabled, - GetFromAppSettingNames(AppSettingNames.UserManagement.IsQuickThemeSelectEnabled, "false"), - scopes: SettingScopes.Application | SettingScopes.Tenant, isVisibleToClients: true), - new SettingDefinition(AppSettingNames.UserManagement.UseCaptchaOnLogin, - GetFromAppSettingNames(AppSettingNames.UserManagement.UseCaptchaOnLogin, "false"), - scopes: SettingScopes.Application | SettingScopes.Tenant, isVisibleToClients: true), - new SettingDefinition(AppSettingNames.UserManagement.SessionTimeOut.IsEnabled, - GetFromAppSettingNames(AppSettingNames.UserManagement.SessionTimeOut.IsEnabled, "false"), - isVisibleToClients: true, scopes: SettingScopes.Application | SettingScopes.Tenant), - new SettingDefinition(AppSettingNames.UserManagement.SessionTimeOut.TimeOutSecond, - GetFromAppSettingNames(AppSettingNames.UserManagement.SessionTimeOut.TimeOutSecond, "30"), - isVisibleToClients: true, scopes: SettingScopes.Application | SettingScopes.Tenant), - new SettingDefinition(AppSettingNames.UserManagement.SessionTimeOut.ShowTimeOutNotificationSecond, - GetFromAppSettingNames(AppSettingNames.UserManagement.SessionTimeOut.ShowTimeOutNotificationSecond, "30"), - isVisibleToClients: true, scopes: SettingScopes.Application | SettingScopes.Tenant), - new SettingDefinition(AppSettingNames.UserManagement.SessionTimeOut.ShowLockScreenWhenTimedOut, - GetFromAppSettingNames(AppSettingNames.UserManagement.SessionTimeOut.ShowLockScreenWhenTimedOut, "false"), - isVisibleToClients: true, scopes: SettingScopes.Application | SettingScopes.Tenant), - new SettingDefinition(AppSettingNames.UserManagement.AllowOneConcurrentLoginPerUser, - GetFromAppSettingNames(AppSettingNames.UserManagement.AllowOneConcurrentLoginPerUser, "false"), - isVisibleToClients: true, scopes: SettingScopes.Application | SettingScopes.Tenant), - new SettingDefinition(AppSettingNames.UserManagement.AllowUsingGravatarProfilePicture, - GetFromAppSettingNames(AppSettingNames.UserManagement.AllowUsingGravatarProfilePicture, "false"), - isVisibleToClients: true, scopes: SettingScopes.Application | SettingScopes.Tenant), - new SettingDefinition(AppSettingNames.UserManagement.UseGravatarProfilePicture, - GetFromAppSettingNames(AppSettingNames.UserManagement.UseGravatarProfilePicture, "false"), - isVisibleToClients: true, scopes: SettingScopes.User), - new SettingDefinition(LocalizationSettingNames.DefaultLanguage, - "zh-Hans", - isVisibleToClients: true, scopes: SettingScopes.All) - }; - } - - private string GetFromAppSettingNames(string name, string defaultValue = null) - { - return GetFromSettings("App:" + name, defaultValue); - } - - private string GetFromSettings(string name, string defaultValue = null) - { - return _appConfiguration[name] ?? defaultValue; - } - - private IEnumerable GetDefaultThemeSettings() - { - var themeName = "default"; - - return new[] - { - new SettingDefinition(themeName + "." + AppSettingNames.UiManagement.Header.DesktopFixedHeader, - GetFromAppSettingNames(themeName + "." + AppSettingNames.UiManagement.Header.DesktopFixedHeader, "true"), - isVisibleToClients: true, scopes: SettingScopes.All), - new SettingDefinition(themeName + "." + AppSettingNames.UiManagement.Header.MobileFixedHeader, - GetFromAppSettingNames(themeName + "." + AppSettingNames.UiManagement.Header.MobileFixedHeader, "false"), - isVisibleToClients: true, scopes: SettingScopes.All), - new SettingDefinition(themeName + "." + AppSettingNames.UiManagement.Header.Skin, - GetFromAppSettingNames(themeName + "." + AppSettingNames.UiManagement.Header.Skin, "light"), - isVisibleToClients: true, scopes: SettingScopes.All), - - new SettingDefinition(themeName + "." + AppSettingNames.UiManagement.SubHeader.Fixed, - GetFromAppSettingNames(themeName + "." + AppSettingNames.UiManagement.SubHeader.Fixed, "true"), - isVisibleToClients: true, scopes: SettingScopes.All), - new SettingDefinition(themeName + "." + AppSettingNames.UiManagement.SubHeader.Style, - GetFromAppSettingNames(themeName + "." + AppSettingNames.UiManagement.SubHeader.Style, "solid"), - isVisibleToClients: true, scopes: SettingScopes.All), - - new SettingDefinition(themeName + "." + AppSettingNames.UiManagement.LeftAside.AsideSkin, - GetFromAppSettingNames(themeName + "." + AppSettingNames.UiManagement.LeftAside.AsideSkin, "light"), - isVisibleToClients: true, scopes: SettingScopes.All), - new SettingDefinition(themeName + "." + AppSettingNames.UiManagement.LeftAside.FixedAside, - GetFromAppSettingNames(themeName + "." + AppSettingNames.UiManagement.LeftAside.FixedAside, "true"), - isVisibleToClients: true, scopes: SettingScopes.All), - new SettingDefinition(themeName + "." + AppSettingNames.UiManagement.LeftAside.AllowAsideMinimizing, - GetFromAppSettingNames(themeName + "." + AppSettingNames.UiManagement.LeftAside.AllowAsideMinimizing, - "true"), isVisibleToClients: true, scopes: SettingScopes.All), - new SettingDefinition(themeName + "." + AppSettingNames.UiManagement.LeftAside.DefaultMinimizedAside, - GetFromAppSettingNames(themeName + "." + AppSettingNames.UiManagement.LeftAside.DefaultMinimizedAside, - "false"), isVisibleToClients: true, scopes: SettingScopes.All), - new SettingDefinition(themeName + "." + AppSettingNames.UiManagement.LeftAside.SubmenuToggle, - GetFromAppSettingNames(themeName + "." + AppSettingNames.UiManagement.LeftAside.SubmenuToggle, "false"), - isVisibleToClients: true, scopes: SettingScopes.All), - - new SettingDefinition(themeName + "." + AppSettingNames.UiManagement.Footer.FixedFooter, - GetFromAppSettingNames(themeName + "." + AppSettingNames.UiManagement.Footer.FixedFooter, "false"), - isVisibleToClients: true, scopes: SettingScopes.All), - new SettingDefinition(themeName + "." + AppSettingNames.UiManagement.SearchActive, - GetFromAppSettingNames(themeName + "." + AppSettingNames.UiManagement.SearchActive, "false"), - isVisibleToClients: true, scopes: SettingScopes.All) - }; - } - } -} \ No newline at end of file diff --git a/src/PearAdmin.AbpTemplate.Core/AppProvider/Settings/AppSettingNames.cs b/src/PearAdmin.AbpTemplate.Core/AppProvider/Settings/AppSettingNames.cs new file mode 100644 index 0000000000000000000000000000000000000000..c14b10882be928d3a247decf4f0c13674fdedf6d --- /dev/null +++ b/src/PearAdmin.AbpTemplate.Core/AppProvider/Settings/AppSettingNames.cs @@ -0,0 +1,27 @@ +namespace PearAdmin.AbpTemplate.Settings +{ + /// + /// 基础配置定义 + /// + public static class AppSettingNames + { + public static class HostManagement + { + public const string CompanyName = "App.HostManagement.CompanyName"; + public const string CompanyAddress = "App.HostManagement.CompanyAddress"; + } + + public static class TenantManagement + { + public const string DefaultEdition = "App.TenantManagement.DefaultEdition"; + public const string CompanyName = "App.TenantManagement.CompanyName"; + public const string CompanyAddress = "App.TenantManagement.CompanyAddress"; + public const string InviteMailboxTemplate = "App.TenantManagement.InviteMailboxTemplate"; + } + + public static class Email + { + public const string UseHostDefaultEmailSettings = "App.Email.UseHostDefaultEmailSettings"; + } + } +} diff --git a/src/PearAdmin.AbpTemplate.Core/AppProvider/Settings/AppSettingProvider.cs b/src/PearAdmin.AbpTemplate.Core/AppProvider/Settings/AppSettingProvider.cs new file mode 100644 index 0000000000000000000000000000000000000000..816b20605f99bb8d063b0113afeea57075572102 --- /dev/null +++ b/src/PearAdmin.AbpTemplate.Core/AppProvider/Settings/AppSettingProvider.cs @@ -0,0 +1,101 @@ +using System.Collections.Generic; +using System.Linq; +using Abp.Configuration; +using Abp.Localization; +using Abp.Net.Mail; +using Microsoft.Extensions.Configuration; +using PearAdmin.AbpTemplate.AppProvider.Settings.MailboxTemplates; +using PearAdmin.AbpTemplate.Configuration; + +namespace PearAdmin.AbpTemplate.Settings +{ + public class AppSettingProvider : SettingProvider + { + private readonly IConfigurationRoot _appConfiguration; + + public AppSettingProvider(IAppConfigurationAccessor configurationAccessor) + { + _appConfiguration = configurationAccessor.Configuration; + } + + public override IEnumerable GetSettingDefinitions(SettingDefinitionProviderContext context) + { + ChangeEmailSettingScopes(context); + + return GetHostSettings() + .Union(GetTenantSettings()) + .Union(GetSharedSettings()); + } + + private void ChangeEmailSettingScopes(SettingDefinitionProviderContext context) + { + if (AbpTemplateCoreConsts.AllowTenantsToChangeEmailSettings) + { + return; + } + + context.Manager.GetSettingDefinition(EmailSettingNames.Smtp.Host).Scopes = SettingScopes.Application; + context.Manager.GetSettingDefinition(EmailSettingNames.Smtp.Port).Scopes = SettingScopes.Application; + context.Manager.GetSettingDefinition(EmailSettingNames.Smtp.UserName).Scopes = SettingScopes.Application; + context.Manager.GetSettingDefinition(EmailSettingNames.Smtp.Password).Scopes = SettingScopes.Application; + context.Manager.GetSettingDefinition(EmailSettingNames.Smtp.Domain).Scopes = SettingScopes.Application; + context.Manager.GetSettingDefinition(EmailSettingNames.Smtp.EnableSsl).Scopes = SettingScopes.Application; + context.Manager.GetSettingDefinition(EmailSettingNames.Smtp.UseDefaultCredentials).Scopes = SettingScopes.Application; + context.Manager.GetSettingDefinition(EmailSettingNames.DefaultFromAddress).Scopes = SettingScopes.Application; + context.Manager.GetSettingDefinition(EmailSettingNames.DefaultFromDisplayName).Scopes = SettingScopes.Application; + } + + private IEnumerable GetHostSettings() + { + return new[] + { + new SettingDefinition(AppSettingNames.HostManagement.CompanyName, + GetFromAppSettingNames(AppSettingNames.HostManagement.CompanyName)), + new SettingDefinition(AppSettingNames.HostManagement.CompanyAddress, + GetFromAppSettingNames(AppSettingNames.HostManagement.CompanyAddress)), + }; + } + + private IEnumerable GetTenantSettings() + { + return new[] + { + new SettingDefinition(AppSettingNames.TenantManagement.CompanyName, + GetFromAppSettingNames(AppSettingNames.TenantManagement.CompanyName, ""), + scopes: SettingScopes.Tenant), + new SettingDefinition(AppSettingNames.TenantManagement.CompanyAddress, + GetFromAppSettingNames(AppSettingNames.TenantManagement.CompanyAddress, ""), + scopes: SettingScopes.Tenant), + new SettingDefinition(AppSettingNames.TenantManagement.InviteMailboxTemplate, + GetFromAppSettingNames(AppSettingNames.TenantManagement.InviteMailboxTemplate, + InviteMailboxTemplate.DefaultTemplate), + scopes: SettingScopes.Tenant), + new SettingDefinition(AppSettingNames.Email.UseHostDefaultEmailSettings, + GetFromAppSettingNames(AppSettingNames.Email.UseHostDefaultEmailSettings, + AbpTemplateCoreConsts.MultiTenancyEnabled.ToString()), + scopes: SettingScopes.Tenant) + }; + } + + private IEnumerable GetSharedSettings() + { + return new[] + { + new SettingDefinition(LocalizationSettingNames.DefaultLanguage, + "zh-Hans", + isVisibleToClients: true, + scopes: SettingScopes.All) + }; + } + + private string GetFromAppSettingNames(string name, string defaultValue = null) + { + return GetFromSettings("App:" + name, defaultValue); + } + + private string GetFromSettings(string name, string defaultValue = null) + { + return _appConfiguration[name] ?? defaultValue; + } + } +} \ No newline at end of file diff --git a/src/PearAdmin.AbpTemplate.Core/AppProvider/Settings/MailboxTemplates/InviteMailboxTemplate.cs b/src/PearAdmin.AbpTemplate.Core/AppProvider/Settings/MailboxTemplates/InviteMailboxTemplate.cs new file mode 100644 index 0000000000000000000000000000000000000000..67d41aae9d0b7942a0000dc449186eb8d1ad4c31 --- /dev/null +++ b/src/PearAdmin.AbpTemplate.Core/AppProvider/Settings/MailboxTemplates/InviteMailboxTemplate.cs @@ -0,0 +1,49 @@ +namespace PearAdmin.AbpTemplate.AppProvider.Settings.MailboxTemplates +{ + public class InviteMailboxTemplate + { + public static string DefaultTemplate = @" + + + + + {{email.Title}} + + + + + + + + + + + + + + + + +
+
+ +
+
+
+ +

   您好!欢迎加入{{email.CompanyName}}。

+
+
+
+

(这是一封自动发送的邮件,请勿回复。)

+
+
+
+

{{email.CompanyName}}

+
+
+ + + "; + } +} diff --git a/src/PearAdmin.AbpTemplate.Core/MultiTenancy/Tenants/Tenant.cs b/src/PearAdmin.AbpTemplate.Core/MultiTenancy/Tenants/Tenant.cs index 754b2be0d50ea47a42f1a9371139c5163a17ab9a..11343df2e41a7599d532d20f89207c6b8afb3c7d 100644 --- a/src/PearAdmin.AbpTemplate.Core/MultiTenancy/Tenants/Tenant.cs +++ b/src/PearAdmin.AbpTemplate.Core/MultiTenancy/Tenants/Tenant.cs @@ -1,4 +1,5 @@ -using Abp.MultiTenancy; +using Abp; +using Abp.MultiTenancy; using PearAdmin.AbpTemplate.Authorization.Users; namespace PearAdmin.AbpTemplate.MultiTenancy @@ -6,12 +7,24 @@ namespace PearAdmin.AbpTemplate.MultiTenancy public class Tenant : AbpTenant { public Tenant() - { + { } public Tenant(string tenancyName, string name) : base(tenancyName, name) { } + + public Tenant SetEditionId(int editionId) + { + if (editionId <= 0) + { + throw new AbpException(); + } + + EditionId = editionId; + + return this; + } } } diff --git a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Repositories/AbpTemplateRepositoryBase.cs b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Repositories/AbpTemplateRepositoryBase.cs index 33106159298402a1087b1ceb70d81c3b9d46aa30..a025a4c0123f187329e9b8564bec3851cb44054f 100644 --- a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Repositories/AbpTemplateRepositoryBase.cs +++ b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Repositories/AbpTemplateRepositoryBase.cs @@ -1,15 +1,14 @@ using Abp.Domain.Entities; -using Abp.Domain.Repositories; using Abp.EntityFrameworkCore; using Abp.EntityFrameworkCore.Repositories; namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Repositories { /// - /// Base class for custom repositories of the application. + /// 仓储基类 /// - /// Entity type - /// Primary key type of the entity + /// + /// public abstract class AbpTemplateRepositoryBase : EfCoreRepositoryBase where TEntity : class, IEntity { @@ -17,23 +16,5 @@ namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Repositories : base(dbContextProvider) { } - - // Add your common methods for all repositories - } - - /// - /// Base class for custom repositories of the application. - /// This is a shortcut of for primary key. - /// - /// Entity type - public abstract class AbpTemplateRepositoryBase : AbpTemplateRepositoryBase, IRepository - where TEntity : class, IEntity - { - protected AbpTemplateRepositoryBase(IDbContextProvider dbContextProvider) - : base(dbContextProvider) - { - } - - // Do not add any method here, add to the class above (since this inherits it)!!! } } diff --git a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Common/DefaultSettingsCreator.cs b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Common/DefaultSettingsCreator.cs index e9a04124c0ac54a1bf84d2c28be6acb96ec39d36..adf24707a834b93f9f4e76a4e8e2a98891df4857 100644 --- a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Common/DefaultSettingsCreator.cs +++ b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Common/DefaultSettingsCreator.cs @@ -1,7 +1,6 @@ using System.Linq; using Abp.Configuration; using Abp.Localization; -using Abp.MultiTenancy; using Abp.Net.Mail; using Microsoft.EntityFrameworkCore; diff --git a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/DefaultTenantBuilder.cs b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/DefaultTenantBuilder.cs index 38df8cd297ce2c78337e9b6f1124d32a8fe3854a..efb4e6d4530b99c86d08dcf8cb2d38beef80e4ac 100644 --- a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/DefaultTenantBuilder.cs +++ b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/DefaultTenantBuilder.cs @@ -1,8 +1,8 @@ -using System.Linq; +using Abp.MultiTenancy; using Microsoft.EntityFrameworkCore; -using Abp.MultiTenancy; using PearAdmin.AbpTemplate.Editions; using PearAdmin.AbpTemplate.MultiTenancy; +using System.Linq; namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Tenants { @@ -22,22 +22,22 @@ namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Tenants private void CreateDefaultTenant() { - // 创建默认租户(1) - - var defaultTenant = _context.Tenants.IgnoreQueryFilters().FirstOrDefault(t => t.TenancyName == AbpTenantBase.DefaultTenantName); - if (defaultTenant == null) + var existedDefaultTenant = _context.Tenants.IgnoreQueryFilters().Any(t => t.TenancyName == AbpTenantBase.DefaultTenantName); + if (existedDefaultTenant) { - defaultTenant = new Tenant(AbpTenantBase.DefaultTenantName, AbpTenantBase.DefaultTenantName); - - var defaultEdition = _context.Editions.IgnoreQueryFilters().FirstOrDefault(e => e.Name == EditionManager.DefaultEditionName); - if (defaultEdition != null) - { - defaultTenant.EditionId = defaultEdition.Id; - } + return; + } - _context.Tenants.Add(defaultTenant); - _context.SaveChanges(); + // 创建默认租户(1) + var defaultTenant = new Tenant(AbpTenantBase.DefaultTenantName, AbpTenantBase.DefaultTenantName); + var defaultEdition = _context.Editions.IgnoreQueryFilters().FirstOrDefault(e => e.Name == EditionManager.DefaultEditionName); + if (defaultEdition != null) + { + defaultTenant.SetEditionId(defaultEdition.Id); } + + _context.Tenants.Add(defaultTenant); + _context.SaveChanges(); } } } diff --git a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/InitialTenantDbBuilder.cs b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/InitialTenantDbBuilder.cs index a3dcac8387b409144b78005f0dd6aa0de9088fa1..5599701ea424959005a9673d57534e36d5dbd70a 100644 --- a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/InitialTenantDbBuilder.cs +++ b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/InitialTenantDbBuilder.cs @@ -26,6 +26,7 @@ namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Tenants new TenantRoleAndUserBuilder(_context, MultiTenancyConsts.DefaultTenantId).Create(); new DefaultLanguagesCreator(_context, MultiTenancyConsts.DefaultTenantId).Create(); new DefaultSettingsCreator(_context, MultiTenancyConsts.DefaultTenantId).Create(); + new TenantSettingsCreator(_context, MultiTenancyConsts.DefaultTenantId).Create(); } } } diff --git a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/TenantRoleAndUserBuilder.cs b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/TenantRoleAndUserBuilder.cs index 2da93702d006109ba0c8fe6fa92f7a2c83d94011..4cb3368c987fe7e461cdef9c56e21a3924d33960 100644 --- a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/TenantRoleAndUserBuilder.cs +++ b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/TenantRoleAndUserBuilder.cs @@ -49,8 +49,7 @@ namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Tenants var permissions = PermissionFinder .GetAllPermissions(new AppPermissionProvider()) - .Where(p => p.MultiTenancySides.HasFlag(MultiTenancySides.Tenant) && - !grantedPermissions.Contains(p.Name)) + .Where(p => p.MultiTenancySides.HasFlag(MultiTenancySides.Tenant) && !grantedPermissions.Contains(p.Name)) .ToList(); if (permissions.Any()) diff --git a/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/TenantSettingsCreator.cs b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/TenantSettingsCreator.cs new file mode 100644 index 0000000000000000000000000000000000000000..a6f0c7c8d3d5e7df4e4058f4beb66ade58e096a0 --- /dev/null +++ b/src/PearAdmin.AbpTemplate.EntityFrameworkCore/EntityFrameworkCore/Seed/Tenants/TenantSettingsCreator.cs @@ -0,0 +1,42 @@ +using System.Linq; +using Abp.Configuration; +using Microsoft.EntityFrameworkCore; +using PearAdmin.AbpTemplate.AppProvider.Settings.MailboxTemplates; +using PearAdmin.AbpTemplate.Settings; + +namespace PearAdmin.AbpTemplate.EntityFrameworkCore.Seed.Common +{ + public class TenantSettingsCreator + { + private readonly AbpTemplateDbContext _context; + private readonly int? _tenantId; + + public TenantSettingsCreator(AbpTemplateDbContext context, int? tenantId = null) + { + _context = context; + _tenantId = tenantId; + } + + public void Create() + { + CreateDefaultSetting(); + } + + private void CreateDefaultSetting() + { + // 邀请模板设置 + AddSettingIfNotExists(AppSettingNames.TenantManagement.InviteMailboxTemplate, InviteMailboxTemplate.DefaultTemplate, _tenantId); + } + + private void AddSettingIfNotExists(string name, string value, int? tenantId = null) + { + if (_context.Settings.IgnoreQueryFilters().Any(s => s.Name == name && s.TenantId == tenantId && s.UserId == null)) + { + return; + } + + _context.Settings.Add(new Setting(tenantId, null, name, value)); + _context.SaveChanges(); + } + } +}