feat(HomeController): TryShowEnvelope-Methode erstellt, um die Generierung der Show-Envelope-Ansicht zu zentrieren
- TryShowEnvelope-Methode zum EnvelopeLocked-Endpunkt hinzugefügt, um den Umschlag anzuzeigen, wenn der Benutzer bereits autorisiert wurde.
This commit is contained in:
@@ -134,18 +134,23 @@ public class HomeController : ViewControllerBase
|
|||||||
ViewData["UserCulture"] = _cultures[UserLanguage];
|
ViewData["UserCulture"] = _cultures[UserLanguage];
|
||||||
|
|
||||||
return await _envRcvService.ReadByEnvelopeReceiverIdAsync(envelopeReceiverId: envelopeReceiverId).ThenAsync(
|
return await _envRcvService.ReadByEnvelopeReceiverIdAsync(envelopeReceiverId: envelopeReceiverId).ThenAsync(
|
||||||
Success: er => View()
|
SuccessAsync: async er => {
|
||||||
|
if (User.IsInRole(ReceiverRole.FullyAuth))
|
||||||
|
return await TryShowEnvelope(envelopeReceiverId, er);
|
||||||
|
else
|
||||||
|
return View()
|
||||||
.WithData("EnvelopeKey", envelopeReceiverId)
|
.WithData("EnvelopeKey", envelopeReceiverId)
|
||||||
.WithData("TFAEnabled", er.Envelope!.TFAEnabled)
|
.WithData("TFAEnabled", er.Envelope!.TFAEnabled)
|
||||||
.WithData("HasPhoneNumber", er.HasPhoneNumber)
|
.WithData("HasPhoneNumber", er.HasPhoneNumber)
|
||||||
.WithData("SenderEmail", er.Envelope.User!.Email)
|
.WithData("SenderEmail", er.Envelope.User!.Email)
|
||||||
.WithData("EnvelopeTitle", er.Envelope.Title),
|
.WithData("EnvelopeTitle", er.Envelope.Title);
|
||||||
Fail: IActionResult (messages, notices) =>
|
},
|
||||||
{
|
Fail: IActionResult (messages, notices) =>
|
||||||
_logger.LogNotice(notices);
|
{
|
||||||
Response.StatusCode = StatusCodes.Status401Unauthorized;
|
_logger.LogNotice(notices);
|
||||||
return this.ViewEnvelopeNotFound();
|
Response.StatusCode = StatusCodes.Status401Unauthorized;
|
||||||
});
|
return this.ViewEnvelopeNotFound();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
catch(Exception ex)
|
catch(Exception ex)
|
||||||
{
|
{
|
||||||
@@ -154,6 +159,63 @@ public class HomeController : ViewControllerBase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task<IActionResult> TryShowEnvelope(string envelopeReceiverId, EnvelopeReceiverDto er)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ViewData["UserCulture"] = _cultures[UserLanguage];
|
||||||
|
ViewData["EnvelopeKey"] = envelopeReceiverId;
|
||||||
|
|
||||||
|
envelopeReceiverId = _sanitizer.Sanitize(envelopeReceiverId);
|
||||||
|
(string? uuid, string? signature) = envelopeReceiverId.DecodeEnvelopeReceiverId();
|
||||||
|
|
||||||
|
if (uuid is null || signature is null)
|
||||||
|
{
|
||||||
|
_logger.LogEnvelopeError(uuid: uuid, signature: signature, message: _localizer[WebKey.WrongEnvelopeReceiverId]);
|
||||||
|
return Unauthorized();
|
||||||
|
}
|
||||||
|
|
||||||
|
_logger.LogInformation("Envelope UUID: [{uuid}]\nReceiver Signature: [{signature}]", uuid, signature);
|
||||||
|
|
||||||
|
//check access code
|
||||||
|
EnvelopeResponse response = await envelopeOldService.LoadEnvelope(envelopeReceiverId);
|
||||||
|
|
||||||
|
//check rejection
|
||||||
|
var rejRcvrs = await _historyService.ReadRejectingReceivers(er.Envelope!.Id);
|
||||||
|
if (rejRcvrs.Any())
|
||||||
|
{
|
||||||
|
ViewBag.IsExt = !rejRcvrs.Contains(er.Receiver); //external if the current user is not rejected
|
||||||
|
return View("EnvelopeRejected", er);
|
||||||
|
}
|
||||||
|
|
||||||
|
//check if it has already signed
|
||||||
|
if (await _historyService.IsSigned(envelopeId: er.Envelope!.Id, userReference: er.Receiver!.EmailAddress))
|
||||||
|
return View("EnvelopeSigned");
|
||||||
|
|
||||||
|
if (er.Envelope.Documents?.FirstOrDefault() is EnvelopeDocumentDto 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);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogEnvelopeError(envelopeReceiverId: envelopeReceiverId, exception: ex);
|
||||||
|
return this.ViewInnerServiceError();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#region TFA Views
|
#region TFA Views
|
||||||
[NonAction]
|
[NonAction]
|
||||||
private async Task<IActionResult> TFAViewAsync(bool viaSms, EnvelopeReceiverSecretDto er_secret, string envelopeReceiverId)
|
private async Task<IActionResult> TFAViewAsync(bool viaSms, EnvelopeReceiverSecretDto er_secret, string envelopeReceiverId)
|
||||||
@@ -318,37 +380,9 @@ public class HomeController : ViewControllerBase
|
|||||||
.WithData("ErrorMessage", _localizer[WebKey.WrongAccessCode].Value);
|
.WithData("ErrorMessage", _localizer[WebKey.WrongAccessCode].Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
//continue the process without important data to minimize security errors.
|
await HttpContext.SignInEnvelopeAsync(er_secret, ReceiverRole.FullyAuth);
|
||||||
EnvelopeReceiverDto er = er_secret;
|
|
||||||
|
|
||||||
//check rejection
|
return await TryShowEnvelope(envelopeReceiverId, er_secret);
|
||||||
var rejRcvrs = await _historyService.ReadRejectingReceivers(er.Envelope!.Id);
|
|
||||||
if(rejRcvrs.Any())
|
|
||||||
{
|
|
||||||
ViewBag.IsExt = !rejRcvrs.Contains(er.Receiver); //external if the current user is not rejected
|
|
||||||
return View("EnvelopeRejected", er);
|
|
||||||
}
|
|
||||||
|
|
||||||
//check if it has already signed
|
|
||||||
if (await _historyService.IsSigned(envelopeId: er.Envelope!.Id, userReference: er.Receiver!.EmailAddress))
|
|
||||||
return View("EnvelopeSigned");
|
|
||||||
|
|
||||||
if (er.Envelope.Documents?.FirstOrDefault() is EnvelopeDocumentDto 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);
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user