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<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>> 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}")]
|
[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
|
try
|
||||||
{
|
{
|
||||||
// Validate Envelope Key and load envelope
|
// Validate Envelope Key and load envelope
|
||||||
envelopeService.EnsureValidEnvelopeKey(envelopeKey);
|
envelopeService.EnsureValidEnvelopeKey(envelopeKey);
|
||||||
EnvelopeResponse response = await envelopeService.LoadEnvelope(envelopeKey);
|
|
||||||
|
|
||||||
|
EnvelopeResponse response = await envelopeService.LoadEnvelope(envelopeKey);
|
||||||
|
|
||||||
if (envelopeService.ReceiverAlreadySigned(response.Envelope, response.Receiver.Id) == true)
|
if (envelopeService.ReceiverAlreadySigned(response.Envelope, response.Receiver.Id) == true)
|
||||||
{
|
{
|
||||||
return Problem(statusCode: 403);
|
return Problem(statusCode: 403);
|
||||||
|
|||||||
@ -66,35 +66,11 @@ namespace EnvelopeGenerator.Web.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("/EnvelopeKey/{envelopeReceiverId}")]
|
[HttpGet("/EnvelopeKey/{envelopeReceiverId}")]
|
||||||
public async Task<IActionResult> ShowEnvelope([FromRoute] string envelopeReceiverId)
|
public IActionResult ShowEnvelope([FromRoute] string envelopeReceiverId) => Redirect($"/EnvelopeKey/{envelopeReceiverId}/Locked");
|
||||||
{
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost("/EnvelopeKey/{envelopeReceiverId}/Locked")]
|
[HttpPost("/EnvelopeKey/{envelopeReceiverId}/Locked")]
|
||||||
public async Task<IActionResult> ShowEnvelopePost([FromRoute] string envelopeReceiverId, [FromForm] string access_code)
|
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);
|
var envlopeServiceResult = await _envelopeService.ReadByUuidAsync(envelopeUuid, withDocuments: true, withReceivers: true, withHistory: true, withDocumentReceiverElement:true);
|
||||||
|
|
||||||
EnvelopeResponse response = await envelopeOldService.LoadEnvelope(envelopeReceiverId);
|
EnvelopeResponse response = await envelopeOldService.LoadEnvelope(envelopeReceiverId);
|
||||||
@ -114,7 +90,7 @@ namespace EnvelopeGenerator.Web.Controllers
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
database.Services.actionService.EnterIncorrectAccessCode(response.Envelope, response.Receiver); //for history
|
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">
|
<section class="text-center">
|
||||||
<p>Sie haben das Dokument signiert. Im Anschluss erhalten Sie eine schriftliche Bestätigung.</p>
|
<p>Sie haben das Dokument signiert. Im Anschluss erhalten Sie eine schriftliche Bestätigung.</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<footer class="container" id="page-footer">© SignFlow 2023-2024 <a href="https://digitaldata.works">Digital Data GmbH</a></footer>
|
<footer class="container" id="page-footer">© SignFlow 2023-2024 <a href="https://digitaldata.works">Digital Data GmbH</a></footer>
|
||||||
@ -43,15 +43,18 @@
|
|||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
<script>
|
<script>
|
||||||
//document.addEventListener('click', function (event) {
|
const collapseNav = () => {
|
||||||
// var navbarToggle = document.getElementById('navbarToggleExternalContent');
|
document.addEventListener('click', function (event) {
|
||||||
// var navbarButton = document.querySelector('[data-bs-target="#navbarToggleExternalContent"]');
|
var navbarToggle = document.getElementById('navbarToggleExternalContent');
|
||||||
// var isCollapsed = new bootstrap.Collapse(navbarToggle)._isTransitioning;
|
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 () => {
|
document.addEventListener("DOMContentLoaded", async () => {
|
||||||
const app = new App("#app", "@ViewData["EnvelopeKey"]");
|
const app = new App("#app", "@ViewData["EnvelopeKey"]");
|
||||||
await app.init();
|
await app.init();
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
@using EnvelopeGenerator.Web
|
@using EnvelopeGenerator.Web
|
||||||
@using EnvelopeGenerator.Web.Models
|
@using EnvelopeGenerator.Web.Models
|
||||||
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
|
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
|
||||||
@ -66,6 +66,7 @@
|
|||||||
*/
|
*/
|
||||||
getCSRFToken() {
|
getCSRFToken() {
|
||||||
const token = document.getElementsByName('__RequestVerificationToken')[0].value
|
const token = document.getElementsByName('__RequestVerificationToken')[0].value
|
||||||
|
console.log(token)
|
||||||
return { 'X-XSRF-TOKEN': token }
|
return { 'X-XSRF-TOKEN': token }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user