Compare commits

...

2 Commits

Author SHA1 Message Date
Developer 02
f5dd3cf8be PDF-Serialisierung erfolgt jetzt direkt auf Razor Page - Sicherheitsverbesserung
Externer Fetch-Vorgang entfernt, PDF-Inhalt aus Sicherheitsgründen direkt auf der Razor Page serialisiert.
2024-04-10 09:21:56 +02:00
Developer 02
2c17d440c0 Integration von RemoveIfControllerConvention zur bedingten Ausschließung von Test-Controllern
Implementierung von RemoveIfControllerConvention in der Startup-Klasse, um Controller, die mit "Test" beginnen, basierend auf einem Konfigurationsflag auszuschließen, was die Flexibilität der Dienstregistrierung erhöht.
2024-04-09 13:52:38 +02:00
27 changed files with 124 additions and 113 deletions

View File

@@ -16,8 +16,7 @@
int AnnotationIndex, int AnnotationIndex,
DateTime AddedWhen, DateTime AddedWhen,
DateTime? ChangedWhen, DateTime? ChangedWhen,
EnvelopeDocumentDto? Document,
EnvelopeReceiverDto? Receiver,
double Top, double Top,
double Left); double Left
);
} }

View File

@@ -1,6 +1,4 @@
using EnvelopeGenerator.Domain.Entities; namespace EnvelopeGenerator.Application.DTOs
namespace EnvelopeGenerator.Application.DTOs
{ {
public record EnvelopeDocumentDto public record EnvelopeDocumentDto
( (
@@ -10,6 +8,6 @@ namespace EnvelopeGenerator.Application.DTOs
string Filepath, string Filepath,
DateTime AddedWhen, DateTime AddedWhen,
string FilenameOriginal, string FilenameOriginal,
IEnumerable<DocumentReceiverElement>? Elements IEnumerable<DocumentReceiverElementDto>? Elements
); );
} }

View File

@@ -4,5 +4,6 @@
int Id, int Id,
string EmailAddress, string EmailAddress,
string Signature, string Signature,
DateTime AddedWhen); DateTime AddedWhen,
IEnumerable<EnvelopeReceiverDto>? EnvelopeReceivers);
} }

View File

@@ -28,12 +28,12 @@ namespace EnvelopeGenerator.Domain.Entities
[Required] [Required]
[Column("POSITION_X")] [Column("POSITION_X")]
[DefaultValue(0)] [DefaultValue(0)]
public double X { get; set; } public double PositionX { get; set; }
[Required] [Required]
[Column("POSITION_Y")] [Column("POSITION_Y")]
[DefaultValue(0)] [DefaultValue(0)]
public double Y { get; set; } public double PositionY { get; set; }
[Required] [Required]
[Column("WIDTH")] [Column("WIDTH")]
@@ -83,9 +83,9 @@ namespace EnvelopeGenerator.Domain.Entities
public virtual Receiver? Receiver { get; set; } public virtual Receiver? Receiver { get; set; }
[NotMapped] [NotMapped]
public double Top => Math.Round(Y, 5); public double Top => Math.Round(PositionY, 5);
[NotMapped] [NotMapped]
public double Left => Math.Round(X, 5); public double Left => Math.Round(PositionX, 5);
} }
} }

View File

@@ -39,7 +39,7 @@ namespace EnvelopeGenerator.Infrastructure.Repositories
query = query.Where(e => e.Receivers != null && e.Receivers.Any(er => er.Receiver != null && er.Receiver.Signature == signature)); query = query.Where(e => e.Receivers != null && e.Receivers.Any(er => er.Receiver != null && er.Receiver.Signature == signature));
if (withAll || withDocuments) if (withAll || withDocuments)
if (withDocumentReceiverElement) if (withAll || withDocumentReceiverElement)
query = query.Include(e => e.Documents!).ThenInclude(d => d.Elements); query = query.Include(e => e.Documents!).ThenInclude(d => d.Elements);
else else
query = query.Include(e => e.Documents); query = query.Include(e => e.Documents);

View File

@@ -32,7 +32,7 @@ namespace EnvelopeGenerator.Web.Controllers
} }
[HttpPost("/")] [HttpPost("/")]
public IActionResult DebugEnvelopes([FromForm] string password) public IActionResult DebugEnvelopes([FromForm] string? password)
{ {
try try
{ {
@@ -44,12 +44,6 @@ namespace EnvelopeGenerator.Web.Controllers
return View("Index"); return View("Index");
} }
if (password == null)
{
ViewData["error"] = "No password supplied!";
return View("Index");
}
if (password != passwordFromConfig) if (password != passwordFromConfig)
{ {
ViewData["error"] = "Wrong Password!"; ViewData["error"] = "Wrong Password!";
@@ -75,15 +69,34 @@ namespace EnvelopeGenerator.Web.Controllers
{ {
var decodedId = envelopeReceiverId.DecodeEnvelopeReceiverId(); var decodedId = envelopeReceiverId.DecodeEnvelopeReceiverId();
_logger.LogInformation($"Envelope UUID: [{decodedId.EnvelopeUuid}]");
_logger.LogInformation($"Receiver Signature: [{decodedId.ReceiverSignature}]");
var verification = await _envRcvService.VerifyAccessCode(decodedId.EnvelopeUuid, access_code); var verification = await _envRcvService.VerifyAccessCode(decodedId.EnvelopeUuid, access_code);
EnvelopeResponse response = await envelopeOldService.LoadEnvelope(envelopeReceiverId); EnvelopeResponse response = await envelopeOldService.LoadEnvelope(envelopeReceiverId);
if (verification.IsSuccess) if (verification.IsSuccess)
{ {
var envelope = await _envelopeService.ReadByUuidAsync(uuid: decodedId.EnvelopeUuid, signature: decodedId.ReceiverSignature, withAll:true); if (envelopeOldService.ReceiverAlreadySigned(response.Envelope, response.Receiver.Id) == true)
{
return Problem(statusCode: 403);
}
var envelope = await _envelopeService.ReadByUuidAsync(uuid: decodedId.EnvelopeUuid, signature: decodedId.ReceiverSignature, withAll: true);
database.Services.actionService.EnterCorrectAccessCode(response.Envelope, response.Receiver); //for history database.Services.actionService.EnterCorrectAccessCode(response.Envelope, response.Receiver); //for history
ViewData["EnvelopeKey"] = envelopeReceiverId; ViewData["EnvelopeKey"] = envelopeReceiverId;
ViewData["EnvelopeResponse"] = response; ViewData["EnvelopeResponse"] = response;
ViewData["EnvelopeResponse"] = response;
if (response.Envelope.Documents.Count() > 0)
{
var document = await envelopeOldService.GetDocument(response.Envelope.Documents[0].Id, envelopeReceiverId);
byte[] bytes = await envelopeOldService.GetDocumentContents(document);
ViewData["DocumentBytes"] = bytes;
}
else
ViewData["DocumentBytes"] = null;
return View("ShowEnvelope", envelope); return View("ShowEnvelope", envelope);
} }
else else

View File

@@ -4,9 +4,9 @@ using EnvelopeGenerator.Application.DTOs;
using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Domain.Entities;
using EnvelopeGenerator.Infrastructure.Contracts; using EnvelopeGenerator.Infrastructure.Contracts;
namespace EnvelopeGenerator.Web.Controllers namespace EnvelopeGenerator.Web.Controllers.Test
{ {
public class TestConfigController : BasicCRUDControllerBase<TestConfigController, IConfigService, IConfigRepository, ConfigDto, Config, int> public class TestConfigController : TestControllerBase<TestConfigController, IConfigService, IConfigRepository, ConfigDto, Config, int>
{ {
public TestConfigController(ILogger<TestConfigController> logger, IConfigService service) : base(logger, service) public TestConfigController(ILogger<TestConfigController> logger, IConfigService service) : base(logger, service)
{ {

View File

@@ -0,0 +1,17 @@
using DigitalData.Core.API;
using DigitalData.Core.Contracts.Application;
using DigitalData.Core.Contracts.Infrastructure;
using Microsoft.AspNetCore.Mvc;
namespace EnvelopeGenerator.Web.Controllers.Test
{
//[NonController]
[ApiController]
[Route("api/test/[controller]")]
public class TestControllerBase<TOriginalController, TCRUDService, TCRUDRepository, TDto, TEntity, TId> : BasicCRUDControllerBase<TOriginalController, TCRUDService, TCRUDRepository, TDto, TEntity, TId> where TOriginalController : CRUDControllerBase<TOriginalController, TCRUDService, TCRUDRepository, TDto, TDto, TDto, TEntity, TId> where TCRUDService : ICRUDService<TCRUDRepository, TDto, TDto, TDto, TEntity, TId> where TCRUDRepository : ICRUDRepository<TEntity, TId> where TDto : class where TEntity : class
{
public TestControllerBase(ILogger<TOriginalController> logger, TCRUDService service) : base(logger, service)
{
}
}
}

View File

@@ -4,9 +4,9 @@ using EnvelopeGenerator.Application.DTOs;
using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Domain.Entities;
using EnvelopeGenerator.Infrastructure.Contracts; using EnvelopeGenerator.Infrastructure.Contracts;
namespace EnvelopeGenerator.Web.Controllers namespace EnvelopeGenerator.Web.Controllers.Test
{ {
public class TestDocumentReceiverElementController : BasicCRUDControllerBase<TestDocumentReceiverElementController, IDocumentReceiverElementService, IDocumentReceiverElementRepository, DocumentReceiverElementDto, DocumentReceiverElement, int> public class TestDocumentReceiverElementController : TestControllerBase<TestDocumentReceiverElementController, IDocumentReceiverElementService, IDocumentReceiverElementRepository, DocumentReceiverElementDto, DocumentReceiverElement, int>
{ {
public TestDocumentReceiverElementController(ILogger<TestDocumentReceiverElementController> logger, IDocumentReceiverElementService service) : base(logger, service) public TestDocumentReceiverElementController(ILogger<TestDocumentReceiverElementController> logger, IDocumentReceiverElementService service) : base(logger, service)
{ {

View File

@@ -4,9 +4,9 @@ using EnvelopeGenerator.Application.DTOs;
using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Domain.Entities;
using EnvelopeGenerator.Infrastructure.Contracts; using EnvelopeGenerator.Infrastructure.Contracts;
namespace EnvelopeGenerator.Web.Controllers namespace EnvelopeGenerator.Web.Controllers.Test
{ {
public class TestDocumentStatusController : BasicCRUDControllerBase<TestDocumentStatusController, IDocumentStatusService, IDocumentStatusRepository, DocumentStatusDto, DocumentStatus, int> public class TestDocumentStatusController : TestControllerBase<TestDocumentStatusController, IDocumentStatusService, IDocumentStatusRepository, DocumentStatusDto, DocumentStatus, int>
{ {
public TestDocumentStatusController(ILogger<TestDocumentStatusController> logger, IDocumentStatusService service) : base(logger, service) public TestDocumentStatusController(ILogger<TestDocumentStatusController> logger, IDocumentStatusService service) : base(logger, service)
{ {

View File

@@ -1,12 +1,11 @@
using DigitalData.Core.API; using EnvelopeGenerator.Application.Contracts;
using EnvelopeGenerator.Application.Contracts;
using EnvelopeGenerator.Application.DTOs; using EnvelopeGenerator.Application.DTOs;
using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Domain.Entities;
using EnvelopeGenerator.Infrastructure.Contracts; using EnvelopeGenerator.Infrastructure.Contracts;
namespace EnvelopeGenerator.Web.Controllers namespace EnvelopeGenerator.Web.Controllers.Test
{ {
public class TestEmailTemplateController : CRUDControllerBase<TestEmailTemplateController, IEmailTemplateService, IEmailTemplateRepository, EmailTemplateDto, EmailTemplateDto, EmailTemplateDto, EmailTemplate, int> public class TestEmailTemplateController : TestControllerBase<TestEmailTemplateController, IEmailTemplateService, IEmailTemplateRepository, EmailTemplateDto, EmailTemplate, int>
{ {
public TestEmailTemplateController(ILogger<TestEmailTemplateController> logger, IEmailTemplateService service) : base(logger, service) public TestEmailTemplateController(ILogger<TestEmailTemplateController> logger, IEmailTemplateService service) : base(logger, service)
{ {

View File

@@ -4,9 +4,9 @@ using EnvelopeGenerator.Application.DTOs;
using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Domain.Entities;
using EnvelopeGenerator.Infrastructure.Contracts; using EnvelopeGenerator.Infrastructure.Contracts;
namespace EnvelopeGenerator.Web.Controllers namespace EnvelopeGenerator.Web.Controllers.Test
{ {
public class TestEnvelopeCertificateController : BasicCRUDControllerBase<TestEnvelopeCertificateController, IEnvelopeCertificateService, IEnvelopeCertificateRepository, EnvelopeCertificateDto, EnvelopeCertificate, int> public class TestEnvelopeCertificateController : TestControllerBase<TestEnvelopeCertificateController, IEnvelopeCertificateService, IEnvelopeCertificateRepository, EnvelopeCertificateDto, EnvelopeCertificate, int>
{ {
public TestEnvelopeCertificateController(ILogger<TestEnvelopeCertificateController> logger, IEnvelopeCertificateService service) : base(logger, service) public TestEnvelopeCertificateController(ILogger<TestEnvelopeCertificateController> logger, IEnvelopeCertificateService service) : base(logger, service)
{ {

View File

@@ -1,14 +1,13 @@
using DigitalData.Core.API; using EnvelopeGenerator.Application.Contracts;
using EnvelopeGenerator.Application.Contracts;
using EnvelopeGenerator.Application.DTOs; using EnvelopeGenerator.Application.DTOs;
using EnvelopeGenerator.Application.Services; using EnvelopeGenerator.Application.Services;
using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Domain.Entities;
using EnvelopeGenerator.Infrastructure.Contracts; using EnvelopeGenerator.Infrastructure.Contracts;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
namespace EnvelopeGenerator.Web.Controllers namespace EnvelopeGenerator.Web.Controllers.Test
{ {
public class TestEnvelopeController : CRUDControllerBase<TestEnvelopeController, IEnvelopeService, IEnvelopeRepository, EnvelopeDto, EnvelopeDto, EnvelopeDto, Envelope, int> public class TestEnvelopeController : TestControllerBase<TestEnvelopeController, IEnvelopeService, IEnvelopeRepository, EnvelopeDto, Envelope, int>
{ {
public TestEnvelopeController(ILogger<TestEnvelopeController> logger, IEnvelopeService service) : base(logger, service) public TestEnvelopeController(ILogger<TestEnvelopeController> logger, IEnvelopeService service) : base(logger, service)
{ {
@@ -21,7 +20,7 @@ namespace EnvelopeGenerator.Web.Controllers
} }
[HttpGet] [HttpGet]
public virtual async Task<IActionResult> GetAll([FromQuery] string? envelopeKey = default, [FromQuery] bool withDocuments = true, [FromQuery] bool withReceivers = true, [FromQuery] bool withHistory = true) public virtual async Task<IActionResult> GetAll([FromQuery] string? envelopeKey = default, [FromQuery] bool withDocuments = false, [FromQuery] bool withReceivers = false, [FromQuery] bool withHistory = false, [FromQuery] bool withDocumentReceiverElement = false, [FromQuery] bool withAll = true)
{ {
if(envelopeKey is not null) if(envelopeKey is not null)
{ {
@@ -30,7 +29,7 @@ namespace EnvelopeGenerator.Web.Controllers
var envlopeServiceResult = await _service.ReadByUuidAsync( var envlopeServiceResult = await _service.ReadByUuidAsync(
uuid: decoded.EnvelopeUuid, uuid: decoded.EnvelopeUuid,
signature: decoded.ReceiverSignature, signature: decoded.ReceiverSignature,
withDocuments: withDocuments, withReceivers: withReceivers, withHistory: withHistory); withDocuments: withDocuments, withReceivers: withReceivers, withHistory: withHistory, withDocumentReceiverElement:withDocumentReceiverElement, withAll:withAll);
if (envlopeServiceResult.IsSuccess) if (envlopeServiceResult.IsSuccess)
{ {

View File

@@ -4,9 +4,9 @@ using EnvelopeGenerator.Application.DTOs;
using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Domain.Entities;
using EnvelopeGenerator.Infrastructure.Contracts; using EnvelopeGenerator.Infrastructure.Contracts;
namespace EnvelopeGenerator.Web.Controllers namespace EnvelopeGenerator.Web.Controllers.Test
{ {
public class TestEnvelopeDocumentController : BasicCRUDControllerBase<TestEnvelopeDocumentController, IEnvelopeDocumentService, IEnvelopeDocumentRepository, EnvelopeDocumentDto, EnvelopeDocument, int> public class TestEnvelopeDocumentController : TestControllerBase<TestEnvelopeDocumentController, IEnvelopeDocumentService, IEnvelopeDocumentRepository, EnvelopeDocumentDto, EnvelopeDocument, int>
{ {
public TestEnvelopeDocumentController(ILogger<TestEnvelopeDocumentController> logger, IEnvelopeDocumentService service) : base(logger, service) public TestEnvelopeDocumentController(ILogger<TestEnvelopeDocumentController> logger, IEnvelopeDocumentService service) : base(logger, service)
{ {

View File

@@ -4,9 +4,9 @@ using EnvelopeGenerator.Application.DTOs;
using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Domain.Entities;
using EnvelopeGenerator.Infrastructure.Contracts; using EnvelopeGenerator.Infrastructure.Contracts;
namespace EnvelopeGenerator.Web.Controllers namespace EnvelopeGenerator.Web.Controllers.Test
{ {
public class TestEnvelopeHistoryController : BasicCRUDControllerBase<TestEnvelopeHistoryController, IEnvelopeHistoryService, IEnvelopeHistoryRepository, EnvelopeHistoryDto, EnvelopeHistory, long> public class TestEnvelopeHistoryController : TestControllerBase<TestEnvelopeHistoryController, IEnvelopeHistoryService, IEnvelopeHistoryRepository, EnvelopeHistoryDto, EnvelopeHistory, long>
{ {
public TestEnvelopeHistoryController(ILogger<TestEnvelopeHistoryController> logger, IEnvelopeHistoryService service) : base(logger, service) public TestEnvelopeHistoryController(ILogger<TestEnvelopeHistoryController> logger, IEnvelopeHistoryService service) : base(logger, service)
{ {

View File

@@ -4,9 +4,9 @@ using EnvelopeGenerator.Application.DTOs;
using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Domain.Entities;
using EnvelopeGenerator.Infrastructure.Contracts; using EnvelopeGenerator.Infrastructure.Contracts;
namespace EnvelopeGenerator.Web.Controllers namespace EnvelopeGenerator.Web.Controllers.Test
{ {
public class TestEnvelopeReceiverController : BasicCRUDControllerBase<TestEnvelopeReceiverController, IEnvelopeReceiverService, IEnvelopeReceiverRepository, EnvelopeReceiverDto, EnvelopeReceiver, int> public class TestEnvelopeReceiverController : TestControllerBase<TestEnvelopeReceiverController, IEnvelopeReceiverService, IEnvelopeReceiverRepository, EnvelopeReceiverDto, EnvelopeReceiver, int>
{ {
public TestEnvelopeReceiverController(ILogger<TestEnvelopeReceiverController> logger, IEnvelopeReceiverService service) : base(logger, service) public TestEnvelopeReceiverController(ILogger<TestEnvelopeReceiverController> logger, IEnvelopeReceiverService service) : base(logger, service)
{ {

View File

@@ -4,9 +4,9 @@ using EnvelopeGenerator.Application.DTOs;
using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Domain.Entities;
using EnvelopeGenerator.Infrastructure.Contracts; using EnvelopeGenerator.Infrastructure.Contracts;
namespace EnvelopeGenerator.Web.Controllers namespace EnvelopeGenerator.Web.Controllers.Test
{ {
public class TestEnvelopeTypeController : BasicCRUDControllerBase<TestEnvelopeTypeController, IEnvelopeTypeService, IEnvelopeTypeRepository, EnvelopeTypeDto, EnvelopeType, int> public class TestEnvelopeTypeController : TestControllerBase<TestEnvelopeTypeController, IEnvelopeTypeService, IEnvelopeTypeRepository, EnvelopeTypeDto, EnvelopeType, int>
{ {
public TestEnvelopeTypeController(ILogger<TestEnvelopeTypeController> logger, IEnvelopeTypeService service) : base(logger, service) public TestEnvelopeTypeController(ILogger<TestEnvelopeTypeController> logger, IEnvelopeTypeService service) : base(logger, service)
{ {

View File

@@ -4,9 +4,9 @@ using EnvelopeGenerator.Application.DTOs;
using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Domain.Entities;
using EnvelopeGenerator.Infrastructure.Contracts; using EnvelopeGenerator.Infrastructure.Contracts;
namespace EnvelopeGenerator.Web.Controllers namespace EnvelopeGenerator.Web.Controllers.Test
{ {
public class TestReceiverController : BasicCRUDControllerBase<TestReceiverController, IReceiverService, IReceiverRepository, ReceiverDto, Receiver, int> public class TestReceiverController : TestControllerBase<TestReceiverController, IReceiverService, IReceiverRepository, ReceiverDto, Receiver, int>
{ {
public TestReceiverController(ILogger<TestReceiverController> logger, IReceiverService service) : base(logger, service) public TestReceiverController(ILogger<TestReceiverController> logger, IReceiverService service) : base(logger, service)
{ {

View File

@@ -4,9 +4,9 @@ using EnvelopeGenerator.Application.DTOs;
using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Domain.Entities;
using EnvelopeGenerator.Infrastructure.Contracts; using EnvelopeGenerator.Infrastructure.Contracts;
namespace EnvelopeGenerator.Web.Controllers namespace EnvelopeGenerator.Web.Controllers.Test
{ {
public class TestUserReceiverController : BasicCRUDControllerBase<TestUserReceiverController, IUserReceiverService, IUserReceiverRepository, UserReceiverDto, UserReceiver, int> public class TestUserReceiverController : TestControllerBase<TestUserReceiverController, IUserReceiverService, IUserReceiverRepository, UserReceiverDto, UserReceiver, int>
{ {
public TestUserReceiverController(ILogger<TestUserReceiverController> logger, IUserReceiverService service) : base(logger, service) public TestUserReceiverController(ILogger<TestUserReceiverController> logger, IUserReceiverService service) : base(logger, service)
{ {

View File

@@ -10,6 +10,7 @@ using Microsoft.EntityFrameworkCore;
using NLog; using NLog;
using Quartz; using Quartz;
using NLog.Web; using NLog.Web;
using DigitalData.Core.API;
var logger = LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger(); var logger = LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger();
logger.Info("Logging initialized!"); logger.Info("Logging initialized!");
@@ -27,7 +28,12 @@ try
builder.Services.AddScoped<EnvelopeOldService>(); builder.Services.AddScoped<EnvelopeOldService>();
// Add services to the container. // Add services to the container.
builder.Services.AddControllersWithViews().AddJsonOptions(q => builder.Services.AddControllersWithViews(options =>
{
options.Conventions.Add(new RemoveIfControllerConvention()
.AndIf(c => c.ControllerName.StartsWith("Test"))
.AndIf(c => !builder.Configuration.GetValue<bool>("AddTestControllers")));
}).AddJsonOptions(q =>
{ {
// Prevents serialization error when serializing SvgBitmap in EnvelopeReceiver // Prevents serialization error when serializing SvgBitmap in EnvelopeReceiver
q.JsonSerializerOptions.ReferenceHandler = System.Text.Json.Serialization.ReferenceHandler.IgnoreCycles; q.JsonSerializerOptions.ReferenceHandler = System.Text.Json.Serialization.ReferenceHandler.IgnoreCycles;

View File

@@ -44,7 +44,6 @@
</div> </div>
</div> </div>
} }
<script> <script>
const collapseNav = () => { const collapseNav = () => {
document.addEventListener('click', function (event) { document.addEventListener('click', function (event) {
@@ -57,23 +56,34 @@
} }
}); });
} }
@{
var envelopeResponse = ViewData["EnvelopeResponse"];
var settings = new Newtonsoft.Json.JsonSerializerSettings
{
ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()
};
var envelopeResponseJson = Newtonsoft.Json.JsonConvert.SerializeObject(envelopeResponse, settings);
}
var envelopeResponse = @Html.Raw(envelopeResponseJson);
console.log(envelopeResponse);
document.addEventListener("DOMContentLoaded", async () => {
const app = new App("#app", "@ViewData["EnvelopeKey"]", envelopeResponse);
await app.init();
})
</script> </script>
@if (ViewData["DocumentBytes"] is byte[] documentBytes)
{
var envelopeResponse = ViewData["EnvelopeResponse"];
var settings = new Newtonsoft.Json.JsonSerializerSettings
{
ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()
};
var envelopeResponseJson = Newtonsoft.Json.JsonConvert.SerializeObject(envelopeResponse, settings);
var documentBase64String = Convert.ToBase64String(documentBytes);
<script>
var base64String = "@Html.Raw(documentBase64String)";
var byteCharacters = atob(base64String);
var byteNumbers = new Array(byteCharacters.length);
for (var i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
var documentArrayBuffer = byteArray.buffer;
var envelopeResponse = @Html.Raw(envelopeResponseJson);
document.addEventListener("DOMContentLoaded", async () => {
const app = new App("#app", "@ViewData["EnvelopeKey"]", envelopeResponse, documentArrayBuffer);
await app.init();
})
</script>
}
<div id='app' style='background: gray; width: 100vw; height: 100vh; margin: 0 auto;'></div> <div id='app' style='background: gray; width: 100vw; height: 100vh; margin: 0 auto;'></div>

View File

@@ -42,5 +42,6 @@
} }
] ]
} },
"AddTestControllers": false
} }

View File

@@ -36,7 +36,6 @@
const allAnnotations = await this.getAnnotations(instance) const allAnnotations = await this.getAnnotations(instance)
const pageAnnotations = allAnnotations const pageAnnotations = allAnnotations
.map((annotation) => { .map((annotation) => {
console.log(annotation.toJS())
return annotation return annotation
}) })
@@ -109,8 +108,6 @@
const scale = 4 const scale = 4
const fontSize = 10 const fontSize = 10
console.log(receiverSignature)
canvas.width = width * scale canvas.width = width * scale
canvas.height = height * scale canvas.height = height * scale

View File

@@ -10,7 +10,7 @@ const ActionType = {
} }
class App { class App {
constructor(container, envelopeKey, envelopeResponse) { constructor(container, envelopeKey, envelopeResponse, documentBytes) {
this.container = container this.container = container
this.envelopeKey = envelopeKey this.envelopeKey = envelopeKey
@@ -23,6 +23,7 @@ class App {
this.currentReceiver = null this.currentReceiver = null
this.signatureCount = 0 this.signatureCount = 0
this.envelopeResponse = envelopeResponse; this.envelopeResponse = envelopeResponse;
this.documentBytes = documentBytes;
} }
// This function will be called from the ShowEnvelope.razor page // This function will be called from the ShowEnvelope.razor page
@@ -47,9 +48,11 @@ class App {
icon: 'error', icon: 'error',
}) })
} }
console.log(documentResponse.data)
console.log(this.documentBytes)
const arrayBuffer = documentResponse.data const arrayBuffer = this.documentBytes
console.log(arrayBuffer)
// Load PSPDFKit // Load PSPDFKit
this.Instance = await this.UI.loadPSPDFKit(arrayBuffer, this.container) this.Instance = await this.UI.loadPSPDFKit(arrayBuffer, this.container)
this.UI.configurePSPDFKit(this.Instance, this.handleClick.bind(this)) this.UI.configurePSPDFKit(this.Instance, this.handleClick.bind(this))
@@ -198,6 +201,7 @@ class App {
// Export annotation data and save to database // Export annotation data and save to database
try { try {
const json = await this.Instance.exportInstantJSON() const json = await this.Instance.exportInstantJSON()
console.log(json)
const postEnvelopeResult = await this.Network.postEnvelope( const postEnvelopeResult = await this.Network.postEnvelope(
this.envelopeKey, this.envelopeKey,
this.currentDocument.id, this.currentDocument.id,
@@ -236,30 +240,11 @@ class App {
.map(a => a.toJS()) .map(a => a.toJS())
.filter(a => a.isSignature) .filter(a => a.isSignature)
console.log(annotations.length,"Signatures total!")
console.log(filtered.length,"Signatures signed!")
if (totalSignatures > filtered.length) { if (totalSignatures > filtered.length) {
return false return false
} else { } else {
return true return true
} }
/*this.Instance.getFormFields().then(formFields => {
formFields.forEach(formField => {
console.log(formField.name, formField.toJS());
});
// Filter form fields by type
formFields.filter(formField => (
formField instanceof PSPDFKit.FormFields.TextFormField
));
// Get the total number of form fields
const totalFormFields = formFields.size;
console.log(totalFormFields)
})*/
} }
async handleReset(event) { async handleReset(event) {

View File

@@ -5,7 +5,6 @@
* @param {any} envelopeKey * @param {any} envelopeKey
*/ */
async getEnvelope(envelopeKey) { async getEnvelope(envelopeKey) {
console.log("getEnvelope")
return this.getRequest(`/api/envelope/${envelopeKey}`) return this.getRequest(`/api/envelope/${envelopeKey}`)
.then(this.wrapJsonResponse.bind(this)) .then(this.wrapJsonResponse.bind(this))
} }
@@ -17,7 +16,6 @@
* @param {any} json * @param {any} json
*/ */
async postEnvelope(envelopeKey, documentId, json) { async postEnvelope(envelopeKey, documentId, json) {
console.log("postEnvelope")
return this.postRequest(`/api/envelope/${envelopeKey}?index=${documentId}`, json) return this.postRequest(`/api/envelope/${envelopeKey}?index=${documentId}`, json)
.then(this.wrapJsonResponse.bind(this)) .then(this.wrapJsonResponse.bind(this))
} }
@@ -28,7 +26,6 @@
* @param {any} documentId * @param {any} documentId
*/ */
async getDocument(envelopeKey, documentId) { async getDocument(envelopeKey, documentId) {
console.log("getDocument", `/api/document/${envelopeKey}?index=${documentId}`)
return this.getRequest(`/api/document/${envelopeKey}?index=${documentId}`) return this.getRequest(`/api/document/${envelopeKey}?index=${documentId}`)
.then(this.wrapBinaryResponse.bind(this)) .then(this.wrapBinaryResponse.bind(this))
} }
@@ -38,7 +35,6 @@
* @param {any} envelopeKey * @param {any} envelopeKey
*/ */
async openDocument(envelopeKey) { async openDocument(envelopeKey) {
console.log("openDocument")
return this.postRequest(`/api/document/${envelopeKey}`, {}) return this.postRequest(`/api/document/${envelopeKey}`, {})
.then(this.wrapJsonResponse.bind(this)) .then(this.wrapJsonResponse.bind(this))
} }
@@ -66,7 +62,6 @@
*/ */
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 }
} }
@@ -143,10 +138,6 @@
async wrapResponse(response, responseHandler) { async wrapResponse(response, responseHandler) {
let wrappedResponse let wrappedResponse
console.log("Handling response from", response.url)
console.log("Status", response.status)
console.log(response)
if (response.status === 200) { if (response.status === 200) {
const data = await responseHandler(response) const data = await responseHandler(response)
wrappedResponse = new WrappedResponse(data, null) wrappedResponse = new WrappedResponse(data, null)
@@ -157,8 +148,6 @@
wrappedResponse = new WrappedResponse(null, null) wrappedResponse = new WrappedResponse(null, null)
} }
console.log("Wrapped response", wrappedResponse)
return wrappedResponse return wrappedResponse
} }
} }

View File

@@ -76,7 +76,6 @@
className: 'button-reset', className: 'button-reset',
title: 'Zurücksetzen', title: 'Zurücksetzen',
onPress() { onPress() {
console.log('RESET')
callback('RESET') callback('RESET')
}, },
icon: `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-arrow-counterclockwise" viewBox="0 0 16 16"> icon: `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-arrow-counterclockwise" viewBox="0 0 16 16">
@@ -90,7 +89,6 @@
className: 'button-reject', className: 'button-reject',
title: 'Ablehnen', title: 'Ablehnen',
onPress() { onPress() {
console.log('REJECT')
callback('REJECT') callback('REJECT')
}, },
icon: `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-hand-thumbs-down" viewBox="0 0 16 16"> icon: `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-hand-thumbs-down" viewBox="0 0 16 16">
@@ -103,7 +101,6 @@
className: 'button-finish', className: 'button-finish',
title: 'Abschließen', title: 'Abschließen',
onPress() { onPress() {
console.log('FINISH')
callback('FINISH') callback('FINISH')
}, },
}, },

View File

@@ -795,7 +795,7 @@ $.extend( $.validator, {
} }
} catch ( e ) { } catch ( e ) {
if ( this.settings.debug && window.console ) { if ( this.settings.debug && window.console ) {
console.log( "Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e ); console.error( "Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e );
} }
if ( e instanceof TypeError ) { if ( e instanceof TypeError ) {
e.message += ". Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method."; e.message += ". Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.";