diff --git a/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/Pages/EnvelopeSenderPage.razor b/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/Pages/EnvelopeSenderPage.razor new file mode 100644 index 00000000..77316281 --- /dev/null +++ b/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/Pages/EnvelopeSenderPage.razor @@ -0,0 +1,8 @@ +@page "/sender" +@rendermode InteractiveWebAssembly + +

EnvelopeSender

+ +@code { + +} diff --git a/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/Pages/Index.razor b/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/Pages/Index.razor new file mode 100644 index 00000000..1fa72b8e --- /dev/null +++ b/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/Pages/Index.razor @@ -0,0 +1,72 @@ +@page "/" +@rendermode InteractiveWebAssembly +@inject IJSRuntime JS + + + +
+ +
+
+ + + +
+

SignFlow

+

Willkommen im eSign-Portal

+
+
+
+ +
+
+
+ +

+ +

+ +
+
+
+ + + + Sicherer Zugang +
+
+ + + + Digitale Unterschrift +
+
+ + + + + PDF-Export +
+
+
+ +
+
+
+ +
+ +@code { + private const string HomePageDescription = + "Das digitale Unterschriftenportal ist eine Plattform, die entwickelt wurde, um Ihre Dokumente sicher zu unterschreiben und zu verwalten. " + + "Mit seiner benutzerfreundlichen Oberfläche können Sie Ihre Dokumente schnell hochladen, die Unterschriftsprozesse verfolgen und Ihre digitalen Unterschriftenanwendungen einfach durchführen. " + + "Dieses Portal beschleunigt Ihren Arbeitsablauf mit rechtlich gültigen Unterschriften und erhöht gleichzeitig die Sicherheit Ihrer Dokumente."; + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await JS.InvokeVoidAsync("receiverSignature.startTyped", "home-description", HomePageDescription, 15); + } + } +} diff --git a/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/Pages/LoginReceiverPage.razor b/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/Pages/LoginReceiverPage.razor new file mode 100644 index 00000000..735d06ac --- /dev/null +++ b/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/Pages/LoginReceiverPage.razor @@ -0,0 +1,158 @@ +@page "/envelope/login/{EnvelopeKey}" +@rendermode InteractiveWebAssembly +@using EnvelopeGenerator.WebUI.Client.Services +@inject AuthService AuthService +@inject NavigationManager Navigation + + + +
+
+ +
+
+ + + +
+
Dokument öffnen
+

Sicherer Zugang mit Zugangscode

+
+ +
+ +

+ Bitte geben Sie den Zugangscode ein, den Sie per E-Mail erhalten haben, um das Dokument sicher zu öffnen. +

+ + @if (LoginResult == EnvelopeLoginResult.NotFound) { + + } else if (LoginResult == EnvelopeLoginResult.InvalidCode) { + + } else if (LoginResult == EnvelopeLoginResult.Error) { + + } + +
+ +
+ + + + + + + +
+
+ + + +
+ + + +
+
+ +@code { + [Parameter] public string EnvelopeKey { get; set; } = string.Empty; + + string AccessCode = string.Empty; + bool ShowCode; + bool IsLoading; + EnvelopeLoginResult? LoginResult; + + async Task OnKeyDownAsync(Microsoft.AspNetCore.Components.Web.KeyboardEventArgs e) { + if (e.Key == "Enter") + await SubmitAsync(); + } + + async Task SubmitAsync() { + if (string.IsNullOrWhiteSpace(AccessCode) || IsLoading) return; + + IsLoading = true; + LoginResult = null; + await InvokeAsync(StateHasChanged); + + var result = await AuthService.LoginEnvelopeReceiverAsync(EnvelopeKey, AccessCode.Trim()); + + if (result == EnvelopeLoginResult.Success) { + Navigation.NavigateTo($"/envelope/{Uri.EscapeDataString(EnvelopeKey)}", forceLoad: true); + return; + } + + LoginResult = result; + IsLoading = false; + await InvokeAsync(StateHasChanged); + } +} diff --git a/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/Pages/LoginSenderPage.razor b/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/Pages/LoginSenderPage.razor new file mode 100644 index 00000000..8c93d6b2 --- /dev/null +++ b/EnvelopeGenerator.WebUI/EnvelopeGenerator.WebUI.Client/Pages/LoginSenderPage.razor @@ -0,0 +1,172 @@ +@page "/sender/login" +@rendermode InteractiveWebAssembly +@using EnvelopeGenerator.WebUI.Client.Services +@inject AuthService AuthService +@inject NavigationManager Navigation + + + +
+
+ +
+
+ + + + +
+
Sender Anmeldung
+

Sicherer Zugang zum Sender-Dashboard

+
+ +
+ +

+ Bitte melden Sie sich mit Ihren Zugangsdaten an, um auf das Sender-Dashboard zuzugreifen. +

+ + @if (LoginResult == SenderLoginResult.InvalidCredentials) { + + } else if (LoginResult == SenderLoginResult.Error) { + + } + +
+ +
+ + + + + + +
+
+ +
+ +
+ + + + + + + +
+
+ + + +
+ + + +
+
+ +@code { + string Username = string.Empty; + string Password = string.Empty; + bool ShowPassword; + bool IsLoading; + SenderLoginResult? LoginResult; + + async Task OnKeyDownAsync(Microsoft.AspNetCore.Components.Web.KeyboardEventArgs e) { + if (e.Key == "Enter") + await SubmitAsync(); + } + + async Task SubmitAsync() { + if (string.IsNullOrWhiteSpace(Username) || string.IsNullOrWhiteSpace(Password) || IsLoading) return; + + IsLoading = true; + LoginResult = null; + await InvokeAsync(StateHasChanged); + + var result = await AuthService.LoginSenderAsync(Username.Trim(), Password.Trim()); + + if (result == SenderLoginResult.Success) { + Navigation.NavigateTo("/sender", forceLoad: true); + return; + } + + LoginResult = result; + IsLoading = false; + await InvokeAsync(StateHasChanged); + } +}