From bc3e678e25b61201c1e705265bd89cf8846638fd Mon Sep 17 00:00:00 2001 From: LD-Reborn Date: Fri, 28 Nov 2025 22:27:06 +0100 Subject: [PATCH] Added re-authentication modal --- src/Controllers/HomeController.cs | 15 ++++ src/Resources/Views.Home.Login.de.resx | 6 -- src/Resources/Views.Shared._Layout.de.resx | 24 +++++++ src/Resources/Views.Shared._Login.de.resx | 25 +++++++ src/Views/Home/Inventory.cshtml | 52 +++++++------- src/Views/Home/Login.cshtml | 14 +--- src/Views/Shared/_Layout.cshtml | 82 ++++++++++++++++++++++ src/Views/Shared/_Login.cshtml | 16 +++++ 8 files changed, 189 insertions(+), 45 deletions(-) create mode 100644 src/Resources/Views.Shared._Login.de.resx create mode 100644 src/Views/Shared/_Login.cshtml diff --git a/src/Controllers/HomeController.cs b/src/Controllers/HomeController.cs index a4a467a..1ee3513 100644 --- a/src/Controllers/HomeController.cs +++ b/src/Controllers/HomeController.cs @@ -166,6 +166,7 @@ public class HomeController : Controller return RedirectToAction("Index", "Home"); } + Response.StatusCode = 500; switch (authenticationResult.AuthenticationState) { case UserNotAuthenticatedReason.InvalidCredentials: @@ -198,4 +199,18 @@ public class HomeController : Controller { return View(); } + + [Authorize] + [HttpGet("RemainingTime")] + public async Task GetRemainingSessionTime() + { + var result = await HttpContext.AuthenticateAsync(CookieAuthenticationDefaults.AuthenticationScheme); + + if (!result.Succeeded || result.Properties?.ExpiresUtc == null) + return Json(new { remainingMinutes = 0 }); + + var remaining = result.Properties.ExpiresUtc.Value - DateTimeOffset.UtcNow; + return Json(new { remainingMinutes = (int) Math.Ceiling(remaining.TotalMinutes) }); + } + } \ No newline at end of file diff --git a/src/Resources/Views.Home.Login.de.resx b/src/Resources/Views.Home.Login.de.resx index d010f49..ea5d6e5 100644 --- a/src/Resources/Views.Home.Login.de.resx +++ b/src/Resources/Views.Home.Login.de.resx @@ -19,12 +19,6 @@ Anmelden - - Benutzername - - - Passwort - Ungültige Anmeldedaten diff --git a/src/Resources/Views.Shared._Layout.de.resx b/src/Resources/Views.Shared._Layout.de.resx index 7e27699..b34100c 100644 --- a/src/Resources/Views.Shared._Layout.de.resx +++ b/src/Resources/Views.Shared._Layout.de.resx @@ -61,4 +61,28 @@ Administration + + Sitzung verlängern + + + Die Sitzung läuft bald ab. + + + Bitte authentifizieren Sie sich, um fortzufahren, ohne Daten zu verlieren. + + + Authentifizieren + + + Ungültige Anmeldedaten + + + Ihr Konto wurde gesperrt. Warten Sie einige Minuten oder bitten Sie einen Administrator, die Sperre aufzuheben. + + + Sie sind nicht zur Anmeldung berechtigt. Bitten Sie einen Administrator, Ihnen die Berechtigung zu erteilen. + + + Die Hölle ist zugefroren. Machen Sie einen Screenshot und senden Sie ihn an einen Administrator. + diff --git a/src/Resources/Views.Shared._Login.de.resx b/src/Resources/Views.Shared._Login.de.resx new file mode 100644 index 0000000..f3d554f --- /dev/null +++ b/src/Resources/Views.Shared._Login.de.resx @@ -0,0 +1,25 @@ + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, ... + + + System.Resources.ResXResourceWriter, System.Windows.Forms, ... + + + + Anmelden + + + Benutzername + + + Passwort + + diff --git a/src/Views/Home/Inventory.cshtml b/src/Views/Home/Inventory.cshtml index 9df805d..801ae82 100644 --- a/src/Views/Home/Inventory.cshtml +++ b/src/Views/Home/Inventory.cshtml @@ -78,32 +78,32 @@ const BARCODE_TYPE = "@barcodeType"; if (!isEnteredManually) { - switch (BARCODE_TYPE.toUpperCase()) { - case "EAN13": - decodedText = decodedText.slice(0,-1); - break; - case "EAN8": - decodedText = decodedText.slice(0,-1); - break; - case "UPC": - decodedText = decodedText.slice(0,-1); - break; - case "ITF14": - decodedText = decodedText.slice(0,-1); - break; - case "MSI10": - decodedText = decodedText.slice(0,-1); - break; - case "MSI11": - decodedText = decodedText.slice(0,-1); - break; - case "MSI1010": - decodedText = decodedText.slice(0,-2); - break; - case "MSI1110": - decodedText = decodedText.slice(0,-1); - break; - } + switch (BARCODE_TYPE.toUpperCase()) { + case "EAN13": + decodedText = decodedText.slice(0,-1); + break; + case "EAN8": + decodedText = decodedText.slice(0,-1); + break; + case "UPC": + decodedText = decodedText.slice(0,-1); + break; + case "ITF14": + decodedText = decodedText.slice(0,-1); + break; + case "MSI10": + decodedText = decodedText.slice(0,-1); + break; + case "MSI11": + decodedText = decodedText.slice(0,-1); + break; + case "MSI1010": + decodedText = decodedText.slice(0,-2); + break; + case "MSI1110": + decodedText = decodedText.slice(0,-1); + break; + } } decodedText = decodedText.replace(/^0+/, ''); console.log(`Code matched = ${decodedText}`, decodedResult); diff --git a/src/Views/Home/Login.cshtml b/src/Views/Home/Login.cshtml index 760c2e6..9cac17b 100644 --- a/src/Views/Home/Login.cshtml +++ b/src/Views/Home/Login.cshtml @@ -15,17 +15,5 @@ } } -
-
- - -
- -
- - -
- - -
+ diff --git a/src/Views/Shared/_Layout.cshtml b/src/Views/Shared/_Layout.cshtml index 5b72f8b..713d818 100644 --- a/src/Views/Shared/_Layout.cshtml +++ b/src/Views/Shared/_Layout.cshtml @@ -139,6 +139,88 @@ © 2025 - Berufsschule_HAM + + + + + + @* *@ diff --git a/src/Views/Shared/_Login.cshtml b/src/Views/Shared/_Login.cshtml new file mode 100644 index 0000000..30e55cb --- /dev/null +++ b/src/Views/Shared/_Login.cshtml @@ -0,0 +1,16 @@ +@using Microsoft.AspNetCore.Mvc.Localization +@inject IViewLocalizer T + +
+
+ + +
+ +
+ + +
+ + +
\ No newline at end of file