Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- switch (action.type) {
- // ...
- case 'CHECK_PASSWORD': {
- // the following should probably be configurable settings
- // v v v v v v v v v v
- const minPasswordLength = 8
- const maxPasswordLength = 30
- const pwRegSpecial = /[_:!#$%=+<>-]/
- const pwBadChars = /[^\w:!#$%=+<>-]/
- const pwRegLower = /[a-z]/
- const pwRegUpper = /[A-Z]/
- const pwRegNumber = /[\d]/
- const PWD_ERROR = '1'
- const PWD_VALID = '2'
- // ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
- const pass = action.payload.value
- const username = state.userObj.Username.toLowerCase()
- const pwOk = [
- // 0
- pass.length < minPasswordLength ? PWD_ERROR : PWD_VALID,
- // 1
- pass.length > maxPasswordLength ? PWD_ERROR : PWD_VALID,
- // 2
- !pwRegSpecial.test(pass) || pwBadChars.test(pass) ? PWD_ERROR : PWD_VALID,
- // 3
- !pwRegLower.test(pass) ? PWD_ERROR : PWD_VALID,
- // 4
- !pwRegUpper.test(pass) ? PWD_ERROR : PWD_VALID,
- // 5
- !pwRegNumber.test(pass) ? PWD_ERROR : PWD_VALID,
- // 6
- username.includes(pass.toLowerCase()) ||
- pass.toLowerCase().includes(username)
- ? PWD_ERROR
- : PWD_VALID,
- ]
- let passStatus
- if (pwOk.includes('1')) {
- passStatus = {
- class: 'sl-text-error',
- text: 'Password does not meet requirements',
- }
- } else {
- passStatus = {
- class: 'slds-success',
- text: 'Password meets requirements',
- }
- }
- newObj = state.userObj
- newObj[action.payload.apiName] = action.payload.value
- return Object.assign({}, state, {
- passwordOk: pwOk,
- passwordStatus: passStatus,
- userObj: newObj,
- })
- }
- // ...
- default:
- }
Add Comment
Please, Sign In to add comment