diff --git a/app/javascript/dashboard/i18n/locale/en/signup.json b/app/javascript/dashboard/i18n/locale/en/signup.json index 6eaa5d646..8dd5c0d4e 100644 --- a/app/javascript/dashboard/i18n/locale/en/signup.json +++ b/app/javascript/dashboard/i18n/locale/en/signup.json @@ -21,7 +21,8 @@ "PASSWORD": { "LABEL": "Password", "PLACEHOLDER": "Password", - "ERROR": "Password is too short" + "ERROR": "Password is too short", + "IS_INVALID_PASSWORD": "Password should contain atleast 1 uppercase letter, 1 lowercase letter, 1 number and 1 special character" }, "CONFIRM_PASSWORD": { "LABEL": "Confirm Password", diff --git a/app/javascript/dashboard/routes/auth/Signup.vue b/app/javascript/dashboard/routes/auth/Signup.vue index 4f5aab8bd..2ea4e443a 100644 --- a/app/javascript/dashboard/routes/auth/Signup.vue +++ b/app/javascript/dashboard/routes/auth/Signup.vue @@ -54,14 +54,9 @@ :class="{ error: $v.credentials.password.$error }" :label="$t('LOGIN.PASSWORD.LABEL')" :placeholder="$t('SET_NEW_PASSWORD.PASSWORD.PLACEHOLDER')" - :error=" - $v.credentials.password.$error - ? $t('SET_NEW_PASSWORD.PASSWORD.ERROR') - : '' - " + :error="passwordErrorText" @blur="$v.credentials.password.$touch" /> - !!value.match(/^\+[1-9]\d{1,14}$/); export const isPhoneE164OrEmpty = value => isPhoneE164(value) || value === ''; export const shouldBeUrl = (value = '') => value ? value.startsWith('http') : true; +export const isValidPassword = value => { + const containsUppercase = /[A-Z]/.test(value); + const containsLowercase = /[a-z]/.test(value); + const containsNumber = /[0-9]/.test(value); + const containsSpecialCharacter = /[!@#$%^&*()_+\-=[\]{}|'"/\\.,`<>:;?~]/.test( + value + ); + return ( + containsUppercase && + containsLowercase && + containsNumber && + containsSpecialCharacter + ); +}; diff --git a/app/javascript/shared/helpers/specs/ValidatorsHelper.spec.js b/app/javascript/shared/helpers/specs/ValidatorsHelper.spec.js index ba393a7a3..0abc12c84 100644 --- a/app/javascript/shared/helpers/specs/ValidatorsHelper.spec.js +++ b/app/javascript/shared/helpers/specs/ValidatorsHelper.spec.js @@ -1,7 +1,24 @@ import { shouldBeUrl } from '../Validators'; +import { isValidPassword } from '../Validators'; describe('#shouldBeUrl', () => { it('should return correct url', () => { expect(shouldBeUrl('http')).toEqual(true); }); }); + +describe('#isValidPassword', () => { + it('should return correct password', () => { + expect(isValidPassword('testPass4!')).toEqual(true); + expect(isValidPassword('testPass4-')).toEqual(true); + expect(isValidPassword('testPass4\\')).toEqual(true); + expect(isValidPassword("testPass4'")).toEqual(true); + }); + + it('should return wrong password', () => { + expect(isValidPassword('testpass4')).toEqual(false); + expect(isValidPassword('testPass4')).toEqual(false); + expect(isValidPassword('testpass4!')).toEqual(false); + expect(isValidPassword('testPass!')).toEqual(false); + }); +});