From ea4b35f4b40bca011d48fed729d39389aa9f0dc1 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Wed, 11 Dec 2024 00:04:29 +0100 Subject: [PATCH] =?UTF-8?q?feat(HomeController):=20Anweisung=20hinzugef?= =?UTF-8?q?=C3=BCgt,=20um=20den=20geheimen=20Totp-Schl=C3=BCssel=20zu=20ak?= =?UTF-8?q?tualisieren,=20wenn=20er=20in=20Kraft=20ist.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DTOs/Receiver/ReceiverReadDto.cs | 13 ++++++++----- .../Controllers/HomeController.cs | 19 ++++++++++++++++++- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/EnvelopeGenerator.Application/DTOs/Receiver/ReceiverReadDto.cs b/EnvelopeGenerator.Application/DTOs/Receiver/ReceiverReadDto.cs index 7871e7bd..49654fea 100644 --- a/EnvelopeGenerator.Application/DTOs/Receiver/ReceiverReadDto.cs +++ b/EnvelopeGenerator.Application/DTOs/Receiver/ReceiverReadDto.cs @@ -1,4 +1,5 @@ -using DigitalData.Core.DTO; +using DigitalData.Core.Abstractions; +using DigitalData.Core.DTO; using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver; using System.Text.Json.Serialization; @@ -8,14 +9,16 @@ namespace EnvelopeGenerator.Application.DTOs.Receiver int Id, string EmailAddress, string Signature, - DateTime AddedWhen, - string? TotpSecretkey = null, - DateTime? TotpExpiration = null - ) : BaseDTO(Id) + DateTime AddedWhen + ) : BaseDTO(Id), IUnique { [JsonIgnore] public IEnumerable? EnvelopeReceivers { get; init; } public string? LastUsedName => EnvelopeReceivers?.LastOrDefault()?.Name; + + public string? TotpSecretkey { get; set; } = null; + + public DateTime? TotpExpiration { get; set; } = null; }; } \ No newline at end of file diff --git a/EnvelopeGenerator.Web/Controllers/HomeController.cs b/EnvelopeGenerator.Web/Controllers/HomeController.cs index 537908f2..89341ae3 100644 --- a/EnvelopeGenerator.Web/Controllers/HomeController.cs +++ b/EnvelopeGenerator.Web/Controllers/HomeController.cs @@ -20,6 +20,7 @@ using Newtonsoft.Json; using EnvelopeGenerator.Application.DTOs; using DigitalData.Core.Client; using System.Text.Json; +using EnvelopeGenerator.Application.Extensions; namespace EnvelopeGenerator.Web.Controllers { @@ -37,8 +38,10 @@ namespace EnvelopeGenerator.Web.Controllers private readonly IEnvelopeReceiverReadOnlyService _readOnlyService; private readonly IMessagingService _msgService; private readonly IEnvelopeReceiverCache _erCache; + private readonly ICodeGenerator _codeGenerator; + private readonly IReceiverService _rcvService; - public HomeController(EnvelopeOldService envelopeOldService, ILogger logger, IEnvelopeReceiverService envelopeReceiverService, IEnvelopeHistoryService historyService, IStringLocalizer localizer, IConfiguration configuration, HtmlSanitizer sanitizer, Cultures cultures, IEnvelopeMailService envelopeMailService, IEnvelopeReceiverReadOnlyService readOnlyService, IMessagingService messagingService, IEnvelopeReceiverCache envelopeReceiverCache) + public HomeController(EnvelopeOldService envelopeOldService, ILogger logger, IEnvelopeReceiverService envelopeReceiverService, IEnvelopeHistoryService historyService, IStringLocalizer localizer, IConfiguration configuration, HtmlSanitizer sanitizer, Cultures cultures, IEnvelopeMailService envelopeMailService, IEnvelopeReceiverReadOnlyService readOnlyService, IMessagingService messagingService, IEnvelopeReceiverCache envelopeReceiverCache, ICodeGenerator codeGenerator, IReceiverService receiverService) { this.envelopeOldService = envelopeOldService; _envRcvService = envelopeReceiverService; @@ -52,6 +55,8 @@ namespace EnvelopeGenerator.Web.Controllers _readOnlyService = readOnlyService; _msgService = messagingService; _erCache = envelopeReceiverCache; + _codeGenerator = codeGenerator; + _rcvService = receiverService; } [HttpGet("/")] @@ -226,7 +231,19 @@ namespace EnvelopeGenerator.Web.Controllers //check if the user has phone is added if (er_secret.TFAEnabled) + { + var rcv = er_secret.Receiver; + if (rcv.IsTotpSecretInvalid()) + { + rcv.TotpSecretkey = _codeGenerator.GenerateTotpSecretKey(); + rcv.TotpExpiration = DateTime.Now.AddMonths(1); + await _rcvService.UpdateAsync(rcv); + var totp_qr_64 = _codeGenerator.GenerateTotpQrCode(userEmail: rcv.EmailAddress, secretKey: rcv.TotpSecretkey).ToBase64String(); + // send by email + } return await TFAView(auth.UserSelectSMS); + } + } else if (auth.HasSmsCode) {