Skip to content

Commit 4377e0d

Browse files
committed
refactored complexity, not using global lang object, triggering event telling which requirement that is fullfilled
1 parent a0c49c5 commit 4377e0d

File tree

1 file changed

+81
-8
lines changed

1 file changed

+81
-8
lines changed

src/modules/security.js

Lines changed: 81 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -433,20 +433,77 @@
433433
});
434434

435435
/*
436-
* Check password content depending on following parameters:
437-
* data-validation-require-uc-letter,
436+
* Check password content depending on following parameters:
437+
* data-validation-require-uc-letter,
438438
* data-validation-require-lc-letter,
439439
* data-validation-require-special-char,
440440
* data-validation-require-numeral
441-
*
442441
*/
443442
$.formUtils.addValidator({
444443
name : 'complexity',
444+
validatorFunction : function(value, $input, config, language) {
445+
var numRequiredUppercaseChars = $input.valAttr('require-uc-letter') || '0',
446+
numRequiredLowercaseChars = $input.valAttr('require-lc-letter') || '0',
447+
numRequiredSpecialChars = $input.valAttr('require-special-char') || '0',
448+
numRequiredNumericChars = $input.valAttr('require-numeral') || '0',
449+
subValidators = {
450+
'uc-letter': {
451+
pattern: '^(?=(?:.*[A-Z]){'+numRequiredUppercaseChars+',}).+',
452+
numRequired: numRequiredUppercaseChars,
453+
dialogEnd: language.passwordComplexityUppercaseInfo
454+
},
455+
'lc-letter': {
456+
pattern: '^(?=(?:.*[a-z]){'+numRequiredLowercaseChars+',}).+',
457+
numRequired: numRequiredLowercaseChars,
458+
dialogEnd: language.passwordComplexityLowercaseInfo
459+
},
460+
'special-char': {
461+
pattern: '^(?=(?:.*(_|[!"#$%&\'()*+\\\\,-./:;<=>?@[\\]^_`{|}~])){'+numRequiredSpecialChars+',}).+',
462+
numRequired: numRequiredSpecialChars,
463+
dialogEnd: language.passwordComplexitySpecialCharsInfo
464+
},
465+
'numeral': {
466+
pattern: '^(?=(?:.*\\d){'+numRequiredNumericChars+',}).+',
467+
numRequired: numRequiredNumericChars,
468+
dialogEnd: $.formUtils.LANG.passwordComplexityNumericCharsInfo
469+
}
470+
},
471+
errorMessage = '';
472+
473+
$.each(subValidators, function(name, subValidator) {
474+
var numRequired = parseInt(subValidator.numRequired, 10);
475+
if (numRequired) {
476+
var regexp = new RegExp(subValidator.pattern);
477+
if (!regexp.test(value)) {
478+
if (errorMessage === '') {
479+
errorMessage = language.passwordComplexityStart;
480+
}
481+
errorMessage += language.passwordComplexitySeparator + numRequired + subValidator.dialogEnd;
482+
$input.trigger('complexityValidation', [false, name]);
483+
} else {
484+
$input.trigger('complexityValidation', [true, name]);
485+
}
486+
}
487+
});
488+
489+
if (errorMessage) {
490+
this.errorMessage = errorMessage + language.passwordComplexityEnd;
491+
return false;
492+
} else {
493+
return true;
494+
}
495+
},
496+
errorMessage : '',
497+
errorMessageKey: ''
498+
});
499+
/*
500+
$.formUtils.addValidator({
501+
name : '_complexity',
445502
validatorFunction : function(val, $el) {
446-
var numRequiredUppercaseChars = $el.valAttr('require-uc-letter') || '0',
447-
numRequiredLowercaseChars = $el.valAttr('require-lc-letter') || '0',
448-
numRequiredSpecialChars = $el.valAttr('require-special-char') || '0',
449-
numRequiredNumericChars = $el.valAttr('require-numeral') || '0',
503+
var numRequiredUppercaseChars = $el.valAttr('require-uc-letter') || 0,
504+
numRequiredLowercaseChars = $el.valAttr('require-lc-letter') || 0,
505+
numRequiredSpecialChars = $el.valAttr('require-special-char') || 0,
506+
numRequiredNumericChars = $el.valAttr('require-numeral') || 0,
450507
patternUpperCaseChars = '^(?=(?:.*[A-Z]){'+numRequiredUppercaseChars+',}).+',
451508
patternLowerCaseChars = '^(?=(?:.*[a-z]){'+numRequiredLowercaseChars+',}).+',
452509
patternSpecialChars = '^(?=(?:.*(_|[!"#$%&\'()*+\\\\,-./:;<=>?@[\\]^_`{|}~])){'+numRequiredSpecialChars+',}).+',
@@ -458,6 +515,21 @@
458515
error = false,
459516
message_error = '';
460517
518+
var subValidators = {
519+
'uc-letter': {
520+
regex: '^(?=(?:.*[A-Z]){'+numRequiredUppercaseChars+',}).+'
521+
},
522+
'lc-letter': {
523+
regex: '^(?=(?:.*[a-z]){'+numRequiredLowercaseChars+',}).+'
524+
},
525+
'special-char': {
526+
regex: '^(?=(?:.*(_|[!"#$%&\'()*+\\\\,-./:;<=>?@[\\]^_`{|}~])){'+numRequiredSpecialChars+',}).+',
527+
},
528+
'numeral': {
529+
regex: '^(?=(?:.*\\d){'+numRequiredNumericChars+',}).+'
530+
}
531+
};
532+
461533
if (numRequiredUppercaseChars !== '0'){
462534
resultRegExpRequiredUppercaseChars = new RegExp(patternUpperCaseChars).test(val);
463535
}
@@ -482,7 +554,7 @@
482554
else{
483555
error = true;
484556
message_error = $.formUtils.LANG.passwordComplexityStart + numRequiredLowercaseChars + $.formUtils.LANG.passwordComplexityLowercaseInfo;
485-
}
557+
}
486558
}
487559
if (!resultRegExpRequiredSpecialChars){
488560
if (error){
@@ -511,6 +583,7 @@
511583
errorMessage : '',
512584
errorMessageKey: ''
513585
});
586+
*/
514587
/*
515588
* Google reCaptcha 2
516589
*/

0 commit comments

Comments
 (0)