From b88a8fcbb55c1e1bb93ecd48bfe174b7fbe5e841 Mon Sep 17 00:00:00 2001 From: jubnl Date: Wed, 1 Apr 2026 10:14:35 +0200 Subject: [PATCH] fix: unify password validation error to show all requirements at once Co-Authored-By: Claude Sonnet 4.6 --- server/src/services/passwordPolicy.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/server/src/services/passwordPolicy.ts b/server/src/services/passwordPolicy.ts index ad817d1..9b20143 100644 --- a/server/src/services/passwordPolicy.ts +++ b/server/src/services/passwordPolicy.ts @@ -18,10 +18,11 @@ export function validatePassword(password: string): { ok: boolean; reason?: stri return { ok: false, reason: 'Password is too common. Please choose a unique password.' }; } - if (!/[A-Z]/.test(password)) return { ok: false, reason: 'Password must contain at least one uppercase letter' }; - if (!/[a-z]/.test(password)) return { ok: false, reason: 'Password must contain at least one lowercase letter' }; - if (!/[0-9]/.test(password)) return { ok: false, reason: 'Password must contain at least one number' }; - if (!/[^A-Za-z0-9]/.test(password)) return { ok: false, reason: 'Password must contain at least one special character' }; + const requirementsMessage = 'Password must contain at least one uppercase letter, one lowercase letter, one number, and one special character'; + if (!/[A-Z]/.test(password)) return { ok: false, reason: requirementsMessage }; + if (!/[a-z]/.test(password)) return { ok: false, reason: requirementsMessage }; + if (!/[0-9]/.test(password)) return { ok: false, reason: requirementsMessage }; + if (!/[^A-Za-z0-9]/.test(password)) return { ok: false, reason: requirementsMessage }; return { ok: true }; }