|
|
|
@ -2,6 +2,8 @@
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using Microsoft.AspNetCore.Authorization;
|
|
|
|
|
using Volo.Abp.Emailing;
|
|
|
|
|
using Volo.Abp.MultiTenancy;
|
|
|
|
|
using Volo.Abp.Features;
|
|
|
|
|
|
|
|
|
|
namespace Volo.Abp.SettingManagement
|
|
|
|
|
{
|
|
|
|
@ -17,30 +19,52 @@ namespace Volo.Abp.SettingManagement
|
|
|
|
|
|
|
|
|
|
public virtual async Task<EmailSettingsDto> GetAsync()
|
|
|
|
|
{
|
|
|
|
|
return new EmailSettingsDto {
|
|
|
|
|
SmtpHost = await SettingManager.GetOrNullGlobalAsync(EmailSettingNames.Smtp.Host),
|
|
|
|
|
SmtpPort = Convert.ToInt32(await SettingManager.GetOrNullGlobalAsync(EmailSettingNames.Smtp.Port)),
|
|
|
|
|
SmtpUserName = await SettingManager.GetOrNullGlobalAsync(EmailSettingNames.Smtp.UserName),
|
|
|
|
|
SmtpPassword = await SettingManager.GetOrNullGlobalAsync(EmailSettingNames.Smtp.Password),
|
|
|
|
|
SmtpDomain = await SettingManager.GetOrNullGlobalAsync(EmailSettingNames.Smtp.Domain),
|
|
|
|
|
SmtpEnableSsl = Convert.ToBoolean(await SettingManager.GetOrNullGlobalAsync(EmailSettingNames.Smtp.EnableSsl)),
|
|
|
|
|
SmtpUseDefaultCredentials = Convert.ToBoolean(await SettingManager.GetOrNullGlobalAsync(EmailSettingNames.Smtp.UseDefaultCredentials)),
|
|
|
|
|
DefaultFromAddress = await SettingManager.GetOrNullGlobalAsync(EmailSettingNames.DefaultFromAddress),
|
|
|
|
|
DefaultFromDisplayName = await SettingManager.GetOrNullGlobalAsync(EmailSettingNames.DefaultFromDisplayName),
|
|
|
|
|
await CheckFeatureAsync();
|
|
|
|
|
|
|
|
|
|
var settingsDto = new EmailSettingsDto {
|
|
|
|
|
SmtpHost = await SettingProvider.GetOrNullAsync(EmailSettingNames.Smtp.Host),
|
|
|
|
|
SmtpPort = Convert.ToInt32(await SettingProvider.GetOrNullAsync(EmailSettingNames.Smtp.Port)),
|
|
|
|
|
SmtpUserName = await SettingProvider.GetOrNullAsync(EmailSettingNames.Smtp.UserName),
|
|
|
|
|
SmtpPassword = await SettingProvider.GetOrNullAsync(EmailSettingNames.Smtp.Password),
|
|
|
|
|
SmtpDomain = await SettingProvider.GetOrNullAsync(EmailSettingNames.Smtp.Domain),
|
|
|
|
|
SmtpEnableSsl = Convert.ToBoolean(await SettingProvider.GetOrNullAsync(EmailSettingNames.Smtp.EnableSsl)),
|
|
|
|
|
SmtpUseDefaultCredentials = Convert.ToBoolean(await SettingProvider.GetOrNullAsync(EmailSettingNames.Smtp.UseDefaultCredentials)),
|
|
|
|
|
DefaultFromAddress = await SettingProvider.GetOrNullAsync(EmailSettingNames.DefaultFromAddress),
|
|
|
|
|
DefaultFromDisplayName = await SettingProvider.GetOrNullAsync(EmailSettingNames.DefaultFromDisplayName),
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (CurrentTenant.IsAvailable)
|
|
|
|
|
{
|
|
|
|
|
settingsDto.SmtpHost = await SettingManager.GetOrNullForTenantAsync(EmailSettingNames.Smtp.Host, CurrentTenant.GetId(), false);
|
|
|
|
|
settingsDto.SmtpUserName = await SettingManager.GetOrNullForTenantAsync(EmailSettingNames.Smtp.UserName, CurrentTenant.GetId(), false);
|
|
|
|
|
settingsDto.SmtpPassword = await SettingManager.GetOrNullForTenantAsync(EmailSettingNames.Smtp.Password, CurrentTenant.GetId(), false);
|
|
|
|
|
settingsDto.SmtpDomain = await SettingManager.GetOrNullForTenantAsync(EmailSettingNames.Smtp.Domain, CurrentTenant.GetId(), false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return settingsDto;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public virtual async Task UpdateAsync(UpdateEmailSettingsDto input)
|
|
|
|
|
{
|
|
|
|
|
await SettingManager.SetGlobalAsync(EmailSettingNames.Smtp.Host, input.SmtpHost);
|
|
|
|
|
await SettingManager.SetGlobalAsync(EmailSettingNames.Smtp.Port, input.SmtpPort.ToString());
|
|
|
|
|
await SettingManager.SetGlobalAsync(EmailSettingNames.Smtp.UserName, input.SmtpUserName);
|
|
|
|
|
await SettingManager.SetGlobalAsync(EmailSettingNames.Smtp.Password, input.SmtpPassword);
|
|
|
|
|
await SettingManager.SetGlobalAsync(EmailSettingNames.Smtp.Domain, input.SmtpDomain);
|
|
|
|
|
await SettingManager.SetGlobalAsync(EmailSettingNames.Smtp.EnableSsl, input.SmtpEnableSsl.ToString());
|
|
|
|
|
await SettingManager.SetGlobalAsync(EmailSettingNames.Smtp.UseDefaultCredentials, input.SmtpUseDefaultCredentials.ToString().ToLowerInvariant());
|
|
|
|
|
await SettingManager.SetGlobalAsync(EmailSettingNames.DefaultFromAddress, input.DefaultFromAddress);
|
|
|
|
|
await SettingManager.SetGlobalAsync(EmailSettingNames.DefaultFromDisplayName, input.DefaultFromDisplayName);
|
|
|
|
|
await CheckFeatureAsync();
|
|
|
|
|
|
|
|
|
|
await SettingManager.SetForTenantOrGlobalAsync(CurrentTenant.Id, EmailSettingNames.Smtp.Host, input.SmtpHost);
|
|
|
|
|
await SettingManager.SetForTenantOrGlobalAsync(CurrentTenant.Id, EmailSettingNames.Smtp.Port, input.SmtpPort.ToString());
|
|
|
|
|
await SettingManager.SetForTenantOrGlobalAsync(CurrentTenant.Id, EmailSettingNames.Smtp.UserName, input.SmtpUserName);
|
|
|
|
|
await SettingManager.SetForTenantOrGlobalAsync(CurrentTenant.Id, EmailSettingNames.Smtp.Password, input.SmtpPassword);
|
|
|
|
|
await SettingManager.SetForTenantOrGlobalAsync(CurrentTenant.Id, EmailSettingNames.Smtp.Domain, input.SmtpDomain);
|
|
|
|
|
await SettingManager.SetForTenantOrGlobalAsync(CurrentTenant.Id, EmailSettingNames.Smtp.EnableSsl, input.SmtpEnableSsl.ToString());
|
|
|
|
|
await SettingManager.SetForTenantOrGlobalAsync(CurrentTenant.Id, EmailSettingNames.Smtp.UseDefaultCredentials, input.SmtpUseDefaultCredentials.ToString().ToLowerInvariant());
|
|
|
|
|
await SettingManager.SetForTenantOrGlobalAsync(CurrentTenant.Id, EmailSettingNames.DefaultFromAddress, input.DefaultFromAddress);
|
|
|
|
|
await SettingManager.SetForTenantOrGlobalAsync(CurrentTenant.Id, EmailSettingNames.DefaultFromDisplayName, input.DefaultFromDisplayName);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async Task CheckFeatureAsync()
|
|
|
|
|
{
|
|
|
|
|
if (CurrentTenant.IsAvailable)
|
|
|
|
|
{
|
|
|
|
|
await FeatureChecker.CheckEnabledAsync(SettingManagementFeatures.AllowTenantsToChangeEmailSettings);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|