refactor(EnvelopeController): simplify EnvelopeController actions and view handling

- Added overload of CreateShowEnvelopeView(EnvelopeReceiverDto) to remove redundant id parsing logic
- Refactored EnvelopeLocked action to receive EnvelopeReceiverDto directly instead of fetching inside
- Centralized ViewData assignments for cleaner envelope rendering
- Improved error logging to include envelope UUID and receiver signature where applicable
- Adjusted EnvelopeLocked GET to return explicit "EnvelopeLocked" view for unauthenticated users
This commit is contained in:
tekh 2025-09-18 17:14:28 +02:00
parent 0c900d219c
commit 643501f484

View File

@ -59,6 +59,8 @@ public class EnvelopeController : ViewControllerBase
{ {
try try
{ {
ViewData["EnvelopeKey"] = envelopeReceiverId;
if (!envelopeReceiverId.TryDecode(out var decoded)) if (!envelopeReceiverId.TryDecode(out var decoded))
{ {
Response.StatusCode = StatusCodes.Status401Unauthorized; Response.StatusCode = StatusCodes.Status401Unauthorized;
@ -119,12 +121,10 @@ public class EnvelopeController : ViewControllerBase
[HttpGet("{envelopeReceiverId}/Locked")] [HttpGet("{envelopeReceiverId}/Locked")]
[Obsolete("Use DigitalData.Core.Exceptions and .Middleware")] [Obsolete("Use DigitalData.Core.Exceptions and .Middleware")]
public async Task<IActionResult> EnvelopeLocked([FromRoute] string envelopeReceiverId, CancellationToken cancel) public async Task<IActionResult> EnvelopeLocked(EnvelopeReceiverDto er, CancellationToken cancel)
{ {
try try
{ {
var er = await _mediator.ReadEnvelopeReceiverAsync(envelopeReceiverId, cancel);
if (er is null) if (er is null)
{ {
Response.StatusCode = StatusCodes.Status401Unauthorized; Response.StatusCode = StatusCodes.Status401Unauthorized;
@ -132,24 +132,44 @@ public class EnvelopeController : ViewControllerBase
} }
if (User.IsInRole(ReceiverRole.FullyAuth)) if (User.IsInRole(ReceiverRole.FullyAuth))
return await CreateShowEnvelopeView(envelopeReceiverId, er); return await CreateShowEnvelopeView(er);
else else
{ {
ViewData["EnvelopeKey"] = envelopeReceiverId;
ViewData["TFAEnabled"] = er.Envelope!.TFAEnabled; ViewData["TFAEnabled"] = er.Envelope!.TFAEnabled;
ViewData["HasPhoneNumber"] = er.HasPhoneNumber; ViewData["HasPhoneNumber"] = er.HasPhoneNumber;
ViewData["SenderEmail"] = er.Envelope.User!.Email; ViewData["SenderEmail"] = er.Envelope.User!.Email;
ViewData["EnvelopeTitle"] = er.Envelope.Title; ViewData["EnvelopeTitle"] = er.Envelope.Title;
return View(); return View("EnvelopeLocked");
} }
} }
catch(Exception ex) catch(Exception ex)
{ {
_logger.LogEnvelopeError(envelopeReceiverId: envelopeReceiverId, exception: ex); _logger.LogEnvelopeError(uuid: er.Envelope?.Uuid, er.Receiver!.Signature, exception: ex);
return this.ViewInnerServiceError(); return this.ViewInnerServiceError();
} }
} }
[Obsolete("Use MediatR")]
private async Task<IActionResult> CreateShowEnvelopeView(EnvelopeReceiverDto er)
{
if (er.Envelope!.Documents?.FirstOrDefault() is DocumentDto doc && doc.ByteData is not null)
{
ViewData["DocumentBytes"] = doc.ByteData;
}
else
{
_logger.LogEnvelopeError(uuid: 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);
}
[Obsolete("Use MediatR")] [Obsolete("Use MediatR")]
private async Task<IActionResult> CreateShowEnvelopeView(string envelopeReceiverId, EnvelopeReceiverDto er) private async Task<IActionResult> CreateShowEnvelopeView(string envelopeReceiverId, EnvelopeReceiverDto er)
{ {