diff --git a/EnvelopeGenerator.Web/Controllers/HomeController.cs b/EnvelopeGenerator.Web/Controllers/HomeController.cs index 8204b9cd..f6407d04 100644 --- a/EnvelopeGenerator.Web/Controllers/HomeController.cs +++ b/EnvelopeGenerator.Web/Controllers/HomeController.cs @@ -182,18 +182,25 @@ namespace EnvelopeGenerator.Web.Controllers return await _envRcvService.ReadWithSecretByUuidSignatureAsync(uuid: uuid, signature: signature).ThenAsync( SuccessAsync: async er_secret => { - async Task SendSmsView() + async Task TFAView(bool viaSms) { - var res = await _msgService.SendSmsCodeAsync(er_secret.PhoneNumber!, envelopeReceiverId: envelopeReceiverId); - if (res.Ok) - return View("EnvelopeLocked").WithData("ViaSms", true).WithData("Expiration", res.Expiration); - else if (!res.Allowed) - return View("EnvelopeLocked").WithData("ViaSms", true).WithData("Expiration", res.AllowedAt); + if (viaSms) + { + var res = await _msgService.SendSmsCodeAsync(er_secret.PhoneNumber!, envelopeReceiverId: envelopeReceiverId); + if (res.Ok) + return View("EnvelopeLocked").WithData("AccessCodeName", "smsCode").WithData("Expiration", res.Expiration); + else if (!res.Allowed) + return View("EnvelopeLocked").WithData("AccessCodeName", "smsCode").WithData("Expiration", res.AllowedAt); + else + { + var res_json = JsonConvert.SerializeObject(res); + _logger.LogEnvelopeError(envelopeReceiverId: envelopeReceiverId, message: $"An unexpected error occurred while sending an SMS code. Response: ${res_json}"); + return this.ViewInnerServiceError(); + } + } else { - var res_json = JsonConvert.SerializeObject(res); - _logger.LogEnvelopeError(envelopeReceiverId: envelopeReceiverId, message: $"An unexpected error occurred while sending an SMS code. Response: ${res_json}"); - return this.ViewInnerServiceError(); + return View("EnvelopeLocked").WithData("AccessCodeName", "authenticatorCode"); } } @@ -221,10 +228,7 @@ namespace EnvelopeGenerator.Web.Controllers if (er_secret.TFAEnabled) { if (auth.UserSelectSMS is bool userSelectSMS) - { - if(userSelectSMS) - return await SendSmsView(); - } + return await TFAView(userSelectSMS); else { // if If TFA is enabled but UserSelectSMS is null, there is an unauthorized request(e.g. via an application like postman) @@ -244,7 +248,7 @@ namespace EnvelopeGenerator.Web.Controllers { Response.StatusCode = StatusCodes.Status401Unauthorized; ViewData["ErrorMessage"] = _localizer[WebKey.WrongAccessCode].Value; - return await SendSmsView(); + return await TFAView(viaSms: true); } } else diff --git a/EnvelopeGenerator.Web/Views/Home/EnvelopeLocked.cshtml b/EnvelopeGenerator.Web/Views/Home/EnvelopeLocked.cshtml index cb780996..379d9724 100644 --- a/EnvelopeGenerator.Web/Views/Home/EnvelopeLocked.cshtml +++ b/EnvelopeGenerator.Web/Views/Home/EnvelopeLocked.cshtml @@ -5,8 +5,10 @@ var logo = _logoOpt.Value; ViewData["Title"] = _localizer[WebKey.DocProtected]; var userCulture = ViewData["UserCulture"] as Culture; - bool viaSms = ViewData["ViaSms"] is bool _viaSms && _viaSms; - var accessCodeName = viaSms ? "smsCode" : "accessCode"; + string accessCodeName = ViewData["AccessCodeName"] is string _accessCodeName ? _accessCodeName : "accessCode"; + bool viaSms = accessCodeName == "smsCode"; + bool viaAuthenticator = accessCodeName == "authenticatorCode"; + bool viaTFA = viaSms || viaAuthenticator; DateTime? expiration = ViewData["Expiration"] is DateTime _expiration ? _expiration : null; bool tfaEnabled = ViewData["TFAEnabled"] is bool _tfaEnabled && _tfaEnabled; bool hasPhoneNumber = ViewData["HasPhoneNumber"] is bool _hasPhoneNumber && _hasPhoneNumber;