- Add passwordOptions in ActiveEntry.configure - Toggle showPasswordStrengthIndicator to show password strength meter ui, toggle requireRegexValidation to set password regex for validation or requireStrongPasswords to create strong passwords by using zxcvbn. - Sign in/ sing up when enter key is pressed
59 lines
2.2 KiB
JavaScript
59 lines
2.2 KiB
JavaScript
passwordValidationSettings = {};
|
|
|
|
function getPasswordValidationSettings () {
|
|
var ActiveEntryConfiguration = Session.get('Photonic.ActiveEntry');
|
|
var validationSettings = {};
|
|
|
|
validationSettings.showPasswordStrengthIndicator = ActiveEntryConfiguration && ActiveEntryConfiguration.passwordOptions && ActiveEntryConfiguration.passwordOptions.showPasswordStrengthIndicator || false;
|
|
validationSettings.requireRegexValidation = ActiveEntryConfiguration && ActiveEntryConfiguration.passwordOptions && ActiveEntryConfiguration.passwordOptions.requireRegexValidation || false;
|
|
|
|
if (validationSettings.showPasswordStrengthIndicator) {
|
|
// Set password strength meter options
|
|
validationSettings.pwstrengthOptions = {
|
|
common: {
|
|
minChar: 8
|
|
},
|
|
ui: {
|
|
showVerdictsInsideProgressBar: true,
|
|
showStatus: true
|
|
}
|
|
};
|
|
}
|
|
|
|
// Check if codetheweb:zxcvbn is defined
|
|
if (typeof(zxcvbn) === typeof(Function)) {
|
|
validationSettings.requireStrongPasswords = ActiveEntryConfiguration && ActiveEntryConfiguration.passwordOptions && ActiveEntryConfiguration.passwordOptions.requireStrongPasswords || false;
|
|
// Set zxcvbn in pw strength meter
|
|
if (validationSettings.showPasswordStrengthIndicator) {
|
|
validationSettings.pwstrengthOptions.common.zxcvbn = passwordValidationSettings.requireStrongPasswords;
|
|
}
|
|
}
|
|
|
|
return validationSettings;
|
|
}
|
|
|
|
Meteor.startup(function() {
|
|
passwordValidationSettings = getPasswordValidationSettings();
|
|
});
|
|
|
|
checkPasswordStrength = function(password) {
|
|
if (passwordValidationSettings.requireStrongPasswords) {
|
|
// Check zxcvbn
|
|
var zxcvbnResult = zxcvbn(password);
|
|
if (zxcvbnResult && zxcvbnResult.score > 2) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
} else if (passwordValidationSettings.requireRegexValidation) {
|
|
// Apply validation rule
|
|
var result = password.search(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*])[0-9a-zA-Z!@#$%^&*]{8,}$/i);
|
|
if (result > -1) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}; |