// Generated by CoffeeScript 2.7.0
(function() {
/*
LemonLDAP::NG WebAuthn verify script
*/
var check, setMsg, setupConditional, trySetupConditional;
setMsg = function(msg, level) {
$('#msg').attr('trspan', msg);
$('#msg').html(window.translate(msg));
$('#color').removeClass('message-positive message-warning message-danger alert-success alert-warning alert-danger');
$('#color').addClass(`message-${level}`);
if (level === 'positive') {
level = 'success';
}
return $('#color').addClass(`alert-${level}`);
};
check = function() {
var e, request;
if (!webauthnJSON.supported()) {
setMsg('webAuthnUnsupported', 'warning');
return;
}
if (window.webauthnAbort) {
console.log("Aborting conditional mediation");
window.webauthnAbort.abort();
}
e = jQuery.Event("webauthnAttempt");
$(document).trigger(e);
if (!e.isDefaultPrevented()) {
setMsg('webAuthnBrowserInProgress', 'warning');
request = {
publicKey: window.datas.request
};
return webauthnJSON.get(request).then(function(response) {
e = jQuery.Event("webauthnSuccess");
$(document).trigger(e, [response]);
if (!e.isDefaultPrevented()) {
$('#credential').val(JSON.stringify(response));
return $('#credential').closest('form').submit();
}
}).catch(function(error) {
e = jQuery.Event("webauthnFailure");
$(document).trigger(e, [error]);
if (!e.isDefaultPrevented()) {
setMsg('webAuthnBrowserFailed', 'danger');
}
return trySetupConditional();
});
}
};
trySetupConditional = function() {
if (PublicKeyCredential.isConditionalMediationAvailable) {
return PublicKeyCredential.isConditionalMediationAvailable().then(function(result) {
if (result) {
return setupConditional();
}
});
}
};
setupConditional = function() {
var request;
console.log("Setting up conditional mediation");
window.webauthnAbort = new AbortController();
request = {
publicKey: window.datas.request,
mediation: "conditional",
signal: window.webauthnAbort.signal
};
return webauthnJSON.get(request).then(function(response) {
var e;
e = jQuery.Event("webauthnSuccess");
$(document).trigger(e, [response]);
if (!e.isDefaultPrevented()) {
$('#credential').val(JSON.stringify(response));
return $('#credential').closest('form').submit();
}
}).catch(function(error) {
var e;
e = jQuery.Event("webauthnFailure");
$(document).trigger(e, [error]);
if (!e.isDefaultPrevented()) {
// do nothing ?
return true;
}
});
};
$(document).on("portalLoaded", {}, function(event, info) {
return $(document).ready(function() {
$('#retrybutton').on('click', check);
$('.webauthnclick').on('click', check);
trySetupConditional();
if (window.datas.webauthn_autostart) {
return setTimeout(check, 1000);
}
});
});
}).call(this);