From 17961ccefc782ad8782eaeb10297281731c0a459 Mon Sep 17 00:00:00 2001 From: Polianin Nikita Date: Wed, 29 May 2024 03:45:02 +0300 Subject: [PATCH] feat: add email endpoint --- ApiDto/Requests/Configuration/EmailRequest.cs | 45 +++++++++++++++++++ .../Configuration/SetupController.cs | 26 +++++++++++ 2 files changed, 71 insertions(+) create mode 100644 ApiDto/Requests/Configuration/EmailRequest.cs diff --git a/ApiDto/Requests/Configuration/EmailRequest.cs b/ApiDto/Requests/Configuration/EmailRequest.cs new file mode 100644 index 0000000..7770c6e --- /dev/null +++ b/ApiDto/Requests/Configuration/EmailRequest.cs @@ -0,0 +1,45 @@ +using System.ComponentModel.DataAnnotations; + +namespace Mirea.Api.Dto.Requests.Configuration; + +/// +/// Represents a request to configure email settings. +/// +public class EmailRequest +{ + /// + /// Gets or sets the server address. + /// + [Required] + public required string Server { get; set; } + + /// + /// Gets or sets the email address from which emails will be sent. + /// + [Required] + public required string From { get; set; } + + /// + /// Gets or sets the password for the email account. + /// + [Required] + public required string Password { get; set; } + + /// + /// Gets or sets the port number. + /// + [Required] + public int Port { get; set; } + + /// + /// Gets or sets a value indicating whether SSL is enabled. + /// + [Required] + public bool Ssl { get; set; } + + /// + /// Gets or sets the username. + /// + [Required] + public required string User { get; set; } +} \ No newline at end of file diff --git a/Endpoint/Controllers/Configuration/SetupController.cs b/Endpoint/Controllers/Configuration/SetupController.cs index ccc51be..d5eb17e 100644 --- a/Endpoint/Controllers/Configuration/SetupController.cs +++ b/Endpoint/Controllers/Configuration/SetupController.cs @@ -214,6 +214,32 @@ public class SetupController(ISetupToken setupToken, IMaintenanceModeNotConfigur return true; } + + [HttpPost("SetEmail")] + [TokenAuthentication] + [BadRequestResponse] + public ActionResult SetEmail([FromBody] EmailRequest? request) + { + var settings = (request == null) switch + { + true => new EmailSettings(), + false => new EmailSettings + { + Server = request.Server, + From = request.From, + Password = request.Password, + Port = request.Port, + Ssl = request.Ssl, + User = request.User + } + }; + + var general = GeneralConfig; + general.EmailSettings = settings; + GeneralConfig = general; + + return true; + } }