Fix: Login case-insensitiv (Registrierung speichert lowercase, Login war case-sensitiv) + Passwort-Wiederholfeld

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
AliceDarkest
2026-06-30 20:03:46 +02:00
parent adb5646b5e
commit 21c594445f
6 changed files with 52 additions and 10 deletions
+28 -2
View File
@@ -58,6 +58,7 @@
</div>
<div th:if="${param.registerError}" class="mf-alert err">Benutzername bereits vergeben.</div>
<div th:if="${param.passwordMismatch}" class="mf-alert err">Die Passwörter stimmen nicht überein. Bitte erneut eingeben.</div>
<form th:action="@{/register}" method="post">
<div class="mf-field">
@@ -72,6 +73,11 @@
<label class="mf-label" for="reg-password">Passwort</label>
<input id="reg-password" class="mf-input" type="password" name="password" placeholder="Passwort" required>
</div>
<div class="mf-field">
<label class="mf-label" for="reg-password2">Passwort wiederholen</label>
<input id="reg-password2" class="mf-input" type="password" name="confirmPassword" placeholder="Passwort wiederholen" required>
</div>
<p id="reg-pw-msg" class="mf-alert err" style="display:none">Die Passwörter stimmen nicht überein.</p>
<button class="neon-btn" type="submit"><span class="lock">🚀</span> Account erstellen</button>
</form>
@@ -128,10 +134,30 @@
el.addEventListener('click', function (e) { e.preventDefault(); c.classList.remove('active'); });
});
// Bei Registrierungsfehler direkt das Signup-Panel öffnen
if (new URLSearchParams(window.location.search).has('registerError')) {
// Bei Registrierungs-/Passwortfehler direkt das Signup-Panel öffnen
var qp = new URLSearchParams(window.location.search);
if (qp.has('registerError') || qp.has('passwordMismatch')) {
c.classList.add('active');
}
// Client-seitiger Passwort-Abgleich (sofortiges Feedback; der Server prüft zusätzlich)
var pw = document.getElementById('reg-password');
var pw2 = document.getElementById('reg-password2');
var pwMsg = document.getElementById('reg-pw-msg');
var signupForm = pw2 ? pw2.closest('form') : null;
function pwCheck() {
var mismatch = pw2.value.length > 0 && pw.value !== pw2.value;
if (pwMsg) pwMsg.style.display = mismatch ? 'block' : 'none';
pw2.setCustomValidity(pw.value !== pw2.value ? 'Passwörter stimmen nicht überein' : '');
return !mismatch;
}
if (pw && pw2) {
pw.addEventListener('input', pwCheck);
pw2.addEventListener('input', pwCheck);
if (signupForm) signupForm.addEventListener('submit', function (e) {
if (pw.value !== pw2.value) { e.preventDefault(); pwCheck(); c.classList.add('active'); }
});
}
})();
</script>