diff --git a/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs b/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs index 9b420f32..055c3879 100644 --- a/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs +++ b/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs @@ -119,7 +119,79 @@ public class EnvelopeController : ViewControllerBase } } - public async Task CreateEnvelopeLockedView(EnvelopeReceiverDto er, CancellationToken cancel) + [HttpPost("{envelopeReceiverId}")] + [Obsolete("Use MediatR")] + public async Task LogInEnvelope([FromRoute] string envelopeReceiverId, [FromForm] Auth auth) + { + try + { + ViewData["EnvelopeKey"] = envelopeReceiverId; + (string? uuid, string? signature) = envelopeReceiverId.DecodeEnvelopeReceiverId(); + + if (uuid is null || signature is null) + { + _logger.LogEnvelopeError(uuid: uuid, signature: signature, message: _localizer.WrongEnvelopeReceiverId()); + return Unauthorized(); + } + + _logger.LogInformation("Envelope UUID: [{uuid}]\nReceiver Signature: [{signature}]", uuid, signature); + + var er_secret_res = await _envRcvService.ReadWithSecretByUuidSignatureAsync(uuid: uuid, signature: signature); + + if (er_secret_res.IsFailed) + { + _logger.LogNotice(er_secret_res.Notices); + return this.ViewEnvelopeNotFound(); + } + var er_secret = er_secret_res.Data; + + // show envelope if already logged in + if (User.IsInRole(ReceiverRole.FullyAuth)) + return await CreateShowEnvelopeView(er_secret); + + if (auth.HasMulti) + { + return Unauthorized(); + } + else if (auth.HasAccessCode) + { + if (await HandleAccessCodeAsync(auth, er_secret, envelopeReceiverId) is IActionResult acView) + return acView; + } + else if (auth.HasSmsCode) + { + if (await HandleSmsAsync(auth, er_secret, envelopeReceiverId) is IActionResult smsView) + return smsView; + } + else if (auth.HasAuthenticatorCode) + { + if (await HandleAuthenticatorAsync(auth, er_secret, envelopeReceiverId) is IActionResult aView) + return aView; + } + else + { + Response.StatusCode = StatusCodes.Status401Unauthorized; + return View("EnvelopeLocked") + .WithData("EnvelopeKey", envelopeReceiverId) + .WithData("TFAEnabled", er_secret.Envelope!.TFAEnabled) + .WithData("HasPhoneNumber", er_secret.HasPhoneNumber) + .WithData("SenderEmail", er_secret.Envelope.User!.Email) + .WithData("EnvelopeTitle", er_secret.Envelope.Title) + .WithData("ErrorMessage", _localizer.WrongEnvelopeReceiverId()); + } + + await HttpContext.SignInEnvelopeAsync(er_secret, ReceiverRole.FullyAuth); + + return await CreateShowEnvelopeView(er_secret); + } + catch (Exception ex) + { + _logger.LogEnvelopeError(envelopeReceiverId: envelopeReceiverId, exception: ex); + return this.ViewInnerServiceError(); + } + } + + private async Task CreateEnvelopeLockedView(EnvelopeReceiverDto er, CancellationToken cancel) { if (User.IsInRole(ReceiverRole.FullyAuth)) { @@ -150,44 +222,24 @@ public class EnvelopeController : ViewControllerBase } } - [Obsolete("Use MediatR")] - private async Task CreateShowEnvelopeView(string envelopeReceiverId, EnvelopeReceiverDto er) + private async Task CreateShowEnvelopeView(EnvelopeReceiverDto er) { - try + if (er.Envelope!.Documents?.FirstOrDefault() is DocumentDto doc && doc.ByteData is not null) { - ViewData["EnvelopeKey"] = envelopeReceiverId; - (string? uuid, string? signature) = envelopeReceiverId.DecodeEnvelopeReceiverId(); - - if (uuid is null || signature is null) - { - _logger.LogEnvelopeError(uuid: uuid, signature: signature, message: _localizer.WrongEnvelopeReceiverId()); - return Unauthorized(); - } - - _logger.LogInformation("Envelope UUID: [{uuid}]\nReceiver Signature: [{signature}]", uuid, signature); - - if (er.Envelope!.Documents?.FirstOrDefault() is DocumentDto doc && doc.ByteData is not null) - { - ViewData["DocumentBytes"] = doc.ByteData; - } - else - { - _logger.LogEnvelopeError(envelopeReceiverId: envelopeReceiverId, message: "No document byte-data was found in ENVELOPE_DOCUMENT table."); - return this.ViewDocumentNotFound(); - } - - await HttpContext.SignInEnvelopeAsync(er, ReceiverRole.FullyAuth); - - //add PSPDFKit licence key - ViewData["PSPDFKitLicenseKey"] = _configuration["PSPDFKitLicenseKey"]; - - return View("ShowEnvelope", er); + ViewData["DocumentBytes"] = doc.ByteData; } - catch (Exception ex) + else { - _logger.LogEnvelopeError(envelopeReceiverId: envelopeReceiverId, exception: ex); - return this.ViewInnerServiceError(); + _logger.LogEnvelopeError(er.Envelope.Uuid, er.Receiver?.Signature, message: "No document byte-data was found in ENVELOPE_DOCUMENT table."); + return this.ViewDocumentNotFound(); } + + await HttpContext.SignInEnvelopeAsync(er, ReceiverRole.FullyAuth); + + //add PSPDFKit licence key + ViewData["PSPDFKitLicenseKey"] = _configuration["PSPDFKitLicenseKey"]; + + return View("ShowEnvelope", er); } #region TFA Views @@ -293,78 +345,6 @@ public class EnvelopeController : ViewControllerBase } #endregion - [HttpPost("{envelopeReceiverId}")] - [Obsolete("Use MediatR")] - public async Task LogInEnvelope([FromRoute] string envelopeReceiverId, [FromForm] Auth auth) - { - try - { - ViewData["EnvelopeKey"] = envelopeReceiverId; - (string? uuid, string? signature) = envelopeReceiverId.DecodeEnvelopeReceiverId(); - - if (uuid is null || signature is null) - { - _logger.LogEnvelopeError(uuid: uuid, signature: signature, message: _localizer.WrongEnvelopeReceiverId()); - return Unauthorized(); - } - - _logger.LogInformation("Envelope UUID: [{uuid}]\nReceiver Signature: [{signature}]", uuid, signature); - - var er_secret_res = await _envRcvService.ReadWithSecretByUuidSignatureAsync(uuid: uuid, signature: signature); - - if (er_secret_res.IsFailed) - { - _logger.LogNotice(er_secret_res.Notices); - return this.ViewEnvelopeNotFound(); - } - var er_secret = er_secret_res.Data; - - // show envelope if already logged in - if (User.IsInRole(ReceiverRole.FullyAuth)) - return await CreateShowEnvelopeView(envelopeReceiverId, er_secret); - - if (auth.HasMulti) - { - return Unauthorized(); - } - else if (auth.HasAccessCode) - { - if (await HandleAccessCodeAsync(auth, er_secret, envelopeReceiverId) is IActionResult acView) - return acView; - } - else if (auth.HasSmsCode) - { - if (await HandleSmsAsync(auth, er_secret, envelopeReceiverId) is IActionResult smsView) - return smsView; - } - else if (auth.HasAuthenticatorCode) - { - if(await HandleAuthenticatorAsync(auth, er_secret, envelopeReceiverId) is IActionResult aView) - return aView; - } - else - { - Response.StatusCode = StatusCodes.Status401Unauthorized; - return View("EnvelopeLocked") - .WithData("EnvelopeKey", envelopeReceiverId) - .WithData("TFAEnabled", er_secret.Envelope!.TFAEnabled) - .WithData("HasPhoneNumber", er_secret.HasPhoneNumber) - .WithData("SenderEmail", er_secret.Envelope.User!.Email) - .WithData("EnvelopeTitle", er_secret.Envelope.Title) - .WithData("ErrorMessage", _localizer.WrongEnvelopeReceiverId()); - } - - await HttpContext.SignInEnvelopeAsync(er_secret, ReceiverRole.FullyAuth); - - return await CreateShowEnvelopeView(envelopeReceiverId, er_secret); - } - catch (Exception ex) - { - _logger.LogEnvelopeError(envelopeReceiverId: envelopeReceiverId, exception: ex); - return this.ViewInnerServiceError(); - } - } - [NonAction] [Obsolete("Use MediatR")] public async Task EnvelopeReceiverReadOnly([FromRoute] long readOnlyId)