79 lines
2.1 KiB
JavaScript
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);
|
|
});
|
|
}); |