Cleaned up pwcheck.js

This commit is contained in:
HerrKauwer 2014-01-27 23:56:39 +01:00
parent 7d4e0ccb6d
commit 095ee2e40a

View File

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