From 0c1399d5835b290e112edb67543714325b02f522 Mon Sep 17 00:00:00 2001 From: Taarly Date: Wed, 17 Dec 2025 10:35:56 +0100 Subject: [PATCH] csv should now be checked when pressing the "csv verarbeiten" button --- public/views/createuser.php | 48 ++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/public/views/createuser.php b/public/views/createuser.php index b870686..cf3fb3a 100644 --- a/public/views/createuser.php +++ b/public/views/createuser.php @@ -441,30 +441,46 @@ declare(strict_types=1); }); } - // Intercept submit: require preview validation or loaded file to have been checked - form.addEventListener('submit', function (e) { + // Intercept submit: read file if needed, validate preview passwords, then submit + function handleCsvSubmit(e) { + e.preventDefault(); const delim = document.getElementById('csvdelimiter').value || ','; const file = fileInput.files && fileInput.files[0]; - // If no preview is present, require user to load preview first to ensure validation + + const proceedWithText = function (text) { + const res = renderCsvPreview(text, delim); + if (res.invalidCount > 0) { + alert('Import abgebrochen: Es gibt ungültige Passwörter in der CSV-Vorschau. Bitte korrigieren Sie diese zuerst.'); + return; + } + // ensure preview textarea contains the text we'll submit + preview.value = text; + // Remove handler to avoid re-validation loop and submit the form + form.removeEventListener('submit', handleCsvSubmit); + form.submit(); + }; + if (preview.value.trim() === '') { if (file) { - e.preventDefault(); - alert('Bitte klicken Sie auf "In Vorschau laden" bevor Sie die CSV verarbeiten, damit Passwörter validiert werden.'); - return false; + const reader = new FileReader(); + reader.onload = function (ev) { + const text = ev.target.result || ''; + proceedWithText(text); + }; + reader.onerror = function () { + alert('Fehler beim Lesen der Datei. Bitte versuchen Sie es erneut.'); + }; + reader.readAsText(file, 'utf-8'); + return; } - e.preventDefault(); alert('Die CSV-Vorschau ist leer. Bitte wählen Sie eine Datei oder fügen Sie CSV-Inhalt ein.'); - return false; + return; } - const res = renderCsvPreview(preview.value, delim); - if (res.invalidCount > 0) { - e.preventDefault(); - alert('Import abgebrochen: Es gibt ungültige Passwörter in der CSV-Vorschau. Bitte korrigieren Sie diese zuerst.'); - return false; - } - return true; - }); + proceedWithText(preview.value); + } + + form.addEventListener('submit', handleCsvSubmit); })();