// Generated by CoffeeScript 2.7.0
(function() {
$(document).on('checkpassword', function(event, context) {
var evType, newpasswordVal, password, setResult;
password = context.password;
evType = context.evType;
setResult = context.setResult;
// if checkHIBP is enabled
if ($('#ppolicy-checkhibp-feedback').length > 0) {
newpasswordVal = $("#newpassword").val();
if (newpasswordVal.length >= 5) {
// don't check HIBP at each keyup, but only when input focuses out
if (evType === "focusout") {
setResult('ppolicy-checkhibp-feedback', "waiting");
return $.ajax({
dataType: "json",
url: "/checkhibp",
method: "POST",
data: {
"password": btoa(newpasswordVal)
},
context: document.body,
success: function(data) {
var code, msg;
code = data.code;
msg = data.message;
if (code !== void 0) {
if (parseInt(code) === 0) {
// password ok
return setResult('ppolicy-checkhibp-feedback', "good");
} else if (parseInt(code) === 2) {
// password compromised
return setResult('ppolicy-checkhibp-feedback', "bad");
} else {
// unexpected error
console.log('checkhibp: backend error: ', msg);
return setResult('ppolicy-checkhibp-feedback', "unknown");
}
}
},
error: function(j, status, err) {
var res;
if (err) {
console.log('checkhibp: frontend error: ', err);
}
if (j) {
res = JSON.parse(j.responseText);
}
if (res && res.error) {
return console.log('checkhibp: returned error: ', res);
}
}
});
}
} else {
// Check not performed yet
return setResult('ppolicy-checkhibp-feedback', "unknown");
}
}
});
}).call(this);