feat(auth): make password length configurable via env (min 5–30, max 30–128)
CI / check (push) Successful in 29s
CI / tests-imaging-browsers (push) Successful in 1m46s
CI / tests-integration (push) Successful in 1m47s
CI / tests-unit (push) Successful in 1m49s
CI / tests-quality (push) Successful in 44s
CI / tests-ui (push) Successful in 4m38s
CI / preflight (push) Skipped
CI / deploy (push) Successful in 3m38s

Add PASSWORD_MIN_LENGTH / PASSWORD_MAX_LENGTH (validated in src/env.ts) and a
shared passwordPolicy helper. The policy drives the zod schemas in register,
password reset and the admin create-user dialog, plus the live requirement
checks and strength meter in the register form.

Locale messages now interpolate the configured minimum via {min} instead of
hard-coding 12.
This commit is contained in:
openhands committed 2026-10-18 19:20:38 +02:00
1 parent aef0939ee9
commit 9cf1eb615c
36 files changed
+227 -143

No files matched your search

+5 -5
View File
@@ -1058,7 +1058,7 @@
"confirmPassword": "Wachtwoord herhalen",
"usernamePlaceholder": "Gebruikersnaam",
"emailPlaceholder": "E-mail",
"passwordPlaceholder": "Wachtwoord (min 12 tekens)",
"passwordPlaceholder": "Wachtwoord (min {min} tekens)",
"confirmPasswordPlaceholder": "Wachtwoord herhalen",
"selectOutfit": "Kies je outfit",
"termsAccept": "Ik ben 18+ en accepteer de {hotel} voorwaarden & regels.",
@@ -1074,7 +1074,7 @@
"termsError": "Je moet de voorwaarden & regels accepteren om te registreren.",
"usernameError": "Gebruikersnaam is verplicht.",
"emailError": "Een geldig e-mailadres is verplicht.",
"passwordError": "Wachtwoord moet minimaal 12 tekens lang zijn",
"passwordError": "Wachtwoord moet minimaal {min} tekens lang zijn",
"confirmPasswordError": "Wachtwoorden komen niet overeen.",
"termsRequired": "Je moet de voorwaarden accepteren.",
"ageVerified": "Ik ben 18+ en ga akkoord met de leeftijdsvereiste.",
@@ -1093,7 +1093,7 @@
"strengthFair": "Redelijk",
"strengthGood": "Goed",
"strengthStrong": "Sterk",
"passwordMinLength": "Wachtwoord moet minimaal 12 tekens lang zijn",
"passwordMinLength": "Wachtwoord moet minimaal {min} tekens lang zijn",
"passwordUpper": "Wachtwoord moet minstens één hoofdletter bevatten",
"passwordLower": "Wachtwoord moet minstens één kleine letter bevatten",
"passwordDigit": "Wachtwoord moet minstens één cijfer bevatten",
@@ -1128,10 +1128,10 @@
"reset": {
"title": "Nieuw wachtwoord instellen",
"subtitle": "Kies een sterk wachtwoord dat je nergens anders gebruikt.",
"passwordPlaceholder": "Nieuw wachtwoord (min 12 tekens)",
"passwordPlaceholder": "Nieuw wachtwoord (min {min} tekens)",
"resetPassword": "Wachtwoord resetten",
"backToLogin": "Terug naar inloggen",
"passwordMinLength": "Wachtwoord moet minimaal 12 tekens lang zijn",
"passwordMinLength": "Wachtwoord moet minimaal {min} tekens lang zijn",
"tooManyAttempts": "Te veel pogingen — probeer het later opnieuw",
"invalidLink": "Deze reset-link is ongeldig of verlopen. Vraag een nieuwe aan.",
"failed": "Het wachtwoord kon niet worden gereset. Probeer het opnieuw."