php-mpos/public/site_assets/mpos/js/pwcheck.js
2014-01-27 23:56:39 +01:00

79 lines
2.1 KiB
JavaScript

function scorePassword(pass) {
var score = 0;
if (!pass)
return score;
var letters = new Object();
for (var i = 0; i < pass.length; i++) {
letters[pass[i]] = (letters[pass[i]] || 0) + 1;
score += 5.0 / letters[pass[i]];
}
var variations = {
digits: /\d/.test(pass),
lower: /[a-z]/.test(pass),
upper: /[A-Z]/.test(pass),
nonWords: /\W/.test(pass),
spChars: /!@#\$%\^\&*\)\(+=._-/.test(pass)
};
variationCount = 0;
for (var check in variations) {
variationCount += (variations[check] === true) ? 1 : 0;
}
score += (variationCount - 1) * 10;
return parseInt(score);
}
function checkPassStrength(pass) {
var score = scorePassword(pass);
if (score >= 80)
return "Excellent";
if (score >= 70)
return "Strong";
if (score >= 50)
return "Good";
if (score >= 40)
return "Weak";
if (score >= 10)
return "Very weak";
if (score < 10 && score > 1)
return "Extremely weak";
return "";
}
function getStrengthColor(pass) {
var score = scorePassword(pass);
if (score >= 80)
return "#390";
if (score >= 70)
return "#3C0";
if (score >= 50)
return "#399";
if (score >= 40)
return "#F60";
if (score >= 10)
return "#E00";
if (score < 10)
return "#C00";
return "#999";
}
function checkIfPasswordsMatch(pwField1, pwField2) {
var pwMatch = $("#pw_match");
if ($(pwField1).val() === $(pwField2).val() && $(pwField1).val() !== "" && $(pwField2).val() !== "") {
$(pwMatch).text("Passwords match!");
$(pwMatch).css("color", "#390");
} else if ($(pwField1).val() === "" || $(pwField2).val() === "") {
$(pwMatch).text("");
} else {
$(pwMatch).text("Passwords don't match!");
$(pwMatch).css("color", "#399");
}
}
$(document).ready(function() {
var pwField1 = $("#pw_field");
var pwField2 = $("#pw_field2");
$(pwField1).add(pwField2).on("keypress keyup keydown", function() {
var fieldValue = $(pwField1).val();
var pwStrength = $("#pw_strength");
pwStrength.text(checkPassStrength(fieldValue));
pwStrength.css("color", getStrengthColor(fieldValue));
checkIfPasswordsMatch(pwField1, pwField2);
});
});