Reverting changes, validate email only if it was provided

This commit is contained in:
rockstardev
2025-03-05 22:14:06 -06:00
parent 18852af241
commit 1da2cedffd
4 changed files with 9 additions and 9 deletions

View File

@@ -50,11 +50,11 @@ namespace BTCPayServer.Controllers.GreenField
[HttpPut("~/api/v1/server/email")] [HttpPut("~/api/v1/server/email")]
public async Task<IActionResult> ServerEmailSettings(ServerEmailSettingsData request) public async Task<IActionResult> ServerEmailSettings(ServerEmailSettingsData request)
{ {
if (!MailboxAddressValidator.IsMailboxAddress(request.From)) if (!string.IsNullOrWhiteSpace(request.From) && !MailboxAddressValidator.IsMailboxAddress(request.From))
{
ModelState.AddModelError(nameof(request.From), "Invalid email address"); ModelState.AddModelError(nameof(request.From), "Invalid email address");
if (!ModelState.IsValid)
return this.CreateValidationError(ModelState); return this.CreateValidationError(ModelState);
}
if (_policiesSettings.DisableStoresToUseServerEmailSettings == request.EnableStoresToUseServerEmailSettings) if (_policiesSettings.DisableStoresToUseServerEmailSettings == request.EnableStoresToUseServerEmailSettings)
{ {

View File

@@ -70,11 +70,11 @@ namespace BTCPayServer.Controllers.GreenField
[HttpPut("~/api/v1/stores/{storeId}/email")] [HttpPut("~/api/v1/stores/{storeId}/email")]
public async Task<IActionResult> UpdateStoreEmailSettings(string storeId, EmailSettingsData request) public async Task<IActionResult> UpdateStoreEmailSettings(string storeId, EmailSettingsData request)
{ {
if (!MailboxAddressValidator.IsMailboxAddress(request.From)) if (!string.IsNullOrWhiteSpace(request.From) && !MailboxAddressValidator.IsMailboxAddress(request.From))
{
ModelState.AddModelError(nameof(request.From), "Invalid email address"); ModelState.AddModelError(nameof(request.From), "Invalid email address");
if (!ModelState.IsValid)
return this.CreateValidationError(ModelState); return this.CreateValidationError(ModelState);
}
var store = HttpContext.GetStoreData(); var store = HttpContext.GetStoreData();
var blob = store.GetStoreBlob(); var blob = store.GetStoreBlob();

View File

@@ -1256,8 +1256,8 @@ namespace BTCPayServer.Controllers
return RedirectToAction(nameof(Emails)); return RedirectToAction(nameof(Emails));
} }
// save // save if user provided valid email; this will also clear settings if no model.Settings.From
if (!MailboxAddressValidator.IsMailboxAddress(model.Settings.From)) if (model.Settings.From is not null && !MailboxAddressValidator.IsMailboxAddress(model.Settings.From))
{ {
ModelState.AddModelError("Settings.From", StringLocalizer["Invalid email"]); ModelState.AddModelError("Settings.From", StringLocalizer["Invalid email"]);
return View(model); return View(model);

View File

@@ -209,7 +209,7 @@ public partial class UIStoresController
if (model.IsCustomSMTP) if (model.IsCustomSMTP)
{ {
model.Settings.Validate("Settings.", ModelState); model.Settings.Validate("Settings.", ModelState);
if (!MailboxAddressValidator.IsMailboxAddress(model.Settings.From)) if (model.Settings.From is not null && !MailboxAddressValidator.IsMailboxAddress(model.Settings.From))
{ {
ModelState.AddModelError("Settings.From", StringLocalizer["Invalid email"]); ModelState.AddModelError("Settings.From", StringLocalizer["Invalid email"]);
} }