diff --git a/backend/src/unit-tests/validatePassword.test.ts b/backend/src/unit-tests/validatePassword.test.ts index d0b1c41df..9de6333e3 100644 --- a/backend/src/unit-tests/validatePassword.test.ts +++ b/backend/src/unit-tests/validatePassword.test.ts @@ -8,6 +8,10 @@ describe('Password validation utils', () => { it('Accepts correct password with symbols', () => { expect(validatePassword('thisisav~!%ali&dpas$sword').isValid).toBeTruthy() }) + it('Accepts generated password symbols', () => { + expect(validatePassword('valid^password').isValid).toBeTruthy() + expect(validatePassword('valid?password').isValid).toBeTruthy() + }) it('Rejects invalid password with unsupported symbols in the middle', () => { expect(validatePassword('thisisav~%a€li&dpas$sword').isValid).toBeFalsy() }) diff --git a/backend/src/utils/validatePassword.ts b/backend/src/utils/validatePassword.ts index 281c89d02..0b47bbc63 100644 --- a/backend/src/utils/validatePassword.ts +++ b/backend/src/utils/validatePassword.ts @@ -5,7 +5,7 @@ export interface PasswordValidationResult { export const validatePassword = (password: string): PasswordValidationResult => { if (password.length < 8) return { isValid: false, error: 'Password must be at least 8 characters long' } - if (!/^[0-9A-Za-z$%&~!]+$/.test(password)) + if (!/^[0-9A-Za-z^?$%&~!]+$/.test(password)) return { isValid: false, error: 'Password must only contain characters a-z, A-Z, 0-9 and ^?$%&~!', diff --git a/frontend/src/hooks/usePasswordValidation.ts b/frontend/src/hooks/usePasswordValidation.ts index 201b98f8b..1e00eb3e6 100644 --- a/frontend/src/hooks/usePasswordValidation.ts +++ b/frontend/src/hooks/usePasswordValidation.ts @@ -19,7 +19,7 @@ export const usePasswordValidation = () => { return { isValid: false, error: requirements[0] } } - if (!/^[0-9A-Za-z$%&~!]+$/.test(password)) { + if (!/^[0-9A-Za-z^?$%&~!]+$/.test(password)) { return { isValid: false, error: requirements[1] } }