Refaktorisierung der DecodeEnvelopeReceiverId-Methode in EnvelopeGeneratorExtensions
This commit is contained in:
parent
ab713a23ac
commit
501d48961e
@ -10,5 +10,7 @@ namespace EnvelopeGenerator.Application.Contracts
|
||||
Task<IServiceResult<IEnumerable<EnvelopeDto>>> ReadAllWithAsync(bool documents = false, bool receivers = false, bool history = false, bool documentReceiverElement = false);
|
||||
|
||||
Task<IServiceResult<EnvelopeDto>> ReadByUuidAsync(string uuid, bool withDocuments = false, bool withReceivers = false, bool withHistory = false, bool withDocumentReceiverElement = false);
|
||||
|
||||
Task<IServiceResult<EnvelopeDto>> ReadByEnvelopeKeyAsync(string envelopeKey, bool withDocuments = false, bool withReceivers = false, bool withHistory = false, bool withDocumentReceiverElement = false);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
namespace EnvelopeGenerator.Application.Services
|
||||
{
|
||||
public static class EnvelopeGeneratorExtensions
|
||||
{
|
||||
public static (string EnvelopeUuid, string ReceiverSignature) DecodeEnvelopeReceiverId(this string envelopeReceiverId)
|
||||
{
|
||||
byte[] bytes = Convert.FromBase64String(envelopeReceiverId);
|
||||
string decodedString = System.Text.Encoding.UTF8.GetString(bytes);
|
||||
string[] parts = decodedString.Split(new string[] { "::" }, StringSplitOptions.None);
|
||||
|
||||
if (parts.Length > 1)
|
||||
return (EnvelopeUuid: parts[0], ReceiverSignature: parts[1]);
|
||||
else
|
||||
return (string.Empty, string.Empty);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -20,27 +20,15 @@ namespace EnvelopeGenerator.Web.Controllers
|
||||
}
|
||||
|
||||
[HttpGet("api/envelope/{envelopeKey}")]
|
||||
public async Task<IActionResult> Get(string envelopeKey)
|
||||
public async Task<IActionResult> Get([FromRoute] string envelopeKey, [FromBody] string accessCode)
|
||||
{
|
||||
//_logger.LogInformation($"Loading Envelope by Key [{envelopeKey}]");
|
||||
|
||||
//Tuple<string, string> result = Helpers.DecodeEnvelopeReceiverId(envelopeKey);
|
||||
//var envelopeUuid = result.Item1;
|
||||
//var receiverSignature = result.Item2;
|
||||
////var receiverId = receiverModel.GetReceiverIdBySignature(receiverSignature);
|
||||
|
||||
////_logger.LogInformation("Resolved receiver signature to receiverId [{0}]", receiverId);
|
||||
|
||||
//var envlopeServiceResult = await _envelopeService.ReadByUuidAsync(envelopeUuid, withDocuments:true, withReceivers:true, withHistory:true);
|
||||
|
||||
//_logger.LogInformation("Loading envelope..");
|
||||
|
||||
try
|
||||
{
|
||||
// Validate Envelope Key and load envelope
|
||||
envelopeService.EnsureValidEnvelopeKey(envelopeKey);
|
||||
EnvelopeResponse response = await envelopeService.LoadEnvelope(envelopeKey);
|
||||
|
||||
EnvelopeResponse response = await envelopeService.LoadEnvelope(envelopeKey);
|
||||
|
||||
if (envelopeService.ReceiverAlreadySigned(response.Envelope, response.Receiver.Id) == true)
|
||||
{
|
||||
return Problem(statusCode: 403);
|
||||
|
||||
@ -66,35 +66,11 @@ namespace EnvelopeGenerator.Web.Controllers
|
||||
}
|
||||
|
||||
[HttpGet("/EnvelopeKey/{envelopeReceiverId}")]
|
||||
public async Task<IActionResult> ShowEnvelope([FromRoute] string envelopeReceiverId)
|
||||
{
|
||||
EnvelopeResponse response = await envelopeOldService.LoadEnvelope(envelopeReceiverId);
|
||||
|
||||
if (response.Envelope.UseAccessCode)
|
||||
{
|
||||
bool accessCodeAlreadyRequested = database.Models.receiverModel.AccessCodeAlreadyRequested(response.Receiver.Email, response.Envelope.Id);
|
||||
|
||||
if (!accessCodeAlreadyRequested)
|
||||
{
|
||||
// Send email with password
|
||||
bool actionResult = database.Services.actionService.RequestAccessCode(response.Envelope, response.Receiver);
|
||||
bool result = database.Services.emailService.SendDocumentAccessCodeReceivedEmail(response.Envelope, response.Receiver);
|
||||
}
|
||||
|
||||
return Redirect($"/EnvelopeKey/{envelopeReceiverId}/Locked");
|
||||
}
|
||||
else
|
||||
{
|
||||
ViewData["EnvelopeKey"] = envelopeReceiverId;
|
||||
return View();
|
||||
}
|
||||
}
|
||||
public IActionResult ShowEnvelope([FromRoute] string envelopeReceiverId) => Redirect($"/EnvelopeKey/{envelopeReceiverId}/Locked");
|
||||
|
||||
[HttpPost("/EnvelopeKey/{envelopeReceiverId}/Locked")]
|
||||
public async Task<IActionResult> ShowEnvelopePost([FromRoute] string envelopeReceiverId, [FromForm] string access_code)
|
||||
{
|
||||
Tuple<string, string> decode = Helpers.DecodeEnvelopeReceiverId(envelopeReceiverId);
|
||||
var envelopeUuid = decode.Item1;
|
||||
var envlopeServiceResult = await _envelopeService.ReadByUuidAsync(envelopeUuid, withDocuments: true, withReceivers: true, withHistory: true, withDocumentReceiverElement:true);
|
||||
|
||||
EnvelopeResponse response = await envelopeOldService.LoadEnvelope(envelopeReceiverId);
|
||||
@ -114,7 +90,7 @@ namespace EnvelopeGenerator.Web.Controllers
|
||||
else
|
||||
{
|
||||
database.Services.actionService.EnterIncorrectAccessCode(response.Envelope, response.Receiver); //for history
|
||||
return Redirect($"/EnvelopeKey/{envelopeReceiverId}/Locked");
|
||||
return Unauthorized();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -15,9 +15,7 @@
|
||||
|
||||
<section class="text-center">
|
||||
<p>Sie haben das Dokument signiert. Im Anschluss erhalten Sie eine schriftliche Bestätigung.</p>
|
||||
</section>
|
||||
|
||||
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<footer class="container" id="page-footer">© SignFlow 2023-2024 <a href="https://digitaldata.works">Digital Data GmbH</a></footer>
|
||||
@ -43,15 +43,18 @@
|
||||
</div>
|
||||
}
|
||||
<script>
|
||||
//document.addEventListener('click', function (event) {
|
||||
// var navbarToggle = document.getElementById('navbarToggleExternalContent');
|
||||
// var navbarButton = document.querySelector('[data-bs-target="#navbarToggleExternalContent"]');
|
||||
// var isCollapsed = new bootstrap.Collapse(navbarToggle)._isTransitioning;
|
||||
const collapseNav = () => {
|
||||
document.addEventListener('click', function (event) {
|
||||
var navbarToggle = document.getElementById('navbarToggleExternalContent');
|
||||
var navbarButton = document.querySelector('[data-bs-target="#navbarToggleExternalContent"]');
|
||||
var isCollapsed = new bootstrap.Collapse(navbarToggle)._isTransitioning;
|
||||
|
||||
if (!navbarToggle.contains(event.target) && !navbarButton.contains(event.target) && !isCollapsed) {
|
||||
new bootstrap.Collapse(navbarToggle).hide();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// if (!navbarToggle.contains(event.target) && !navbarButton.contains(event.target) && !isCollapsed) {
|
||||
// new bootstrap.Collapse(navbarToggle).hide();
|
||||
// }
|
||||
//});
|
||||
document.addEventListener("DOMContentLoaded", async () => {
|
||||
const app = new App("#app", "@ViewData["EnvelopeKey"]");
|
||||
await app.init();
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
@using EnvelopeGenerator.Web
|
||||
@using EnvelopeGenerator.Web.Models
|
||||
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
|
||||
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
|
||||
@ -66,6 +66,7 @@
|
||||
*/
|
||||
getCSRFToken() {
|
||||
const token = document.getElementsByName('__RequestVerificationToken')[0].value
|
||||
console.log(token)
|
||||
return { 'X-XSRF-TOKEN': token }
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user