(function () {
'use strict';
// Launch SSL request
var sendUrl, tryssl;
tryssl = function tryssl(myevent) {
var e, form, path;
form = $(myevent.currentTarget).closest('form');
path = window.location.pathname;
console.debug('path -> ', path);
console.debug('Call URL -> ', window.datas.sslHost);
e = jQuery.Event("sslAttempt");
$(document).trigger(e);
if (!e.isDefaultPrevented()) {
$.ajax(window.datas.sslHost, {
dataType: 'json',
xhrFields: {
withCredentials: true
},
// If request succeed, posting form to get redirection
// or menu
success: function success(data) {
console.debug('Success -> ', data);
e = jQuery.Event("sslSuccess");
$(document).trigger(e, [data]);
if (!e.isDefaultPrevented()) {
// If we contain a ajax_auth_token, add it to form
if (data.ajax_auth_token) {
form.find('input[name="ajax_auth_token"]').attr("value", data.ajax_auth_token);
}
return sendUrl(form, path);
}
},
// Case else, will display PE_BADCREDENTIALS or fallback to next auth
// backend
error: function error(result) {
console.error('Error during AJAX SSL authentication', result);
e = jQuery.Event("sslFailure");
$(document).trigger(e, [result]);
if (!e.isDefaultPrevented()) {
// If the AJAX query didn't fire at all, it's probably
// a bad certificate
if (result.status === 0) {
// We couldn't send the request.
// if client verification is optional, this means
// the certificate was rejected (or some network error)
sendUrl(form, path);
}
// For compatibility with earlier configs, handle PE9 by posting form
if (result.responseJSON && 'error' in result.responseJSON && result.responseJSON.error === "9") {
sendUrl(form, path);
}
// If the server sent a html error description, display it
if (result.responseJSON && 'html' in result.responseJSON) {
$('#errormsg').html(result.responseJSON.html);
return $(window).trigger('load');
}
}
}
});
}
return false;
};
// This function is exported so that custom JS code can call it
// Do not remove without a deprecation notice
window.ssl_start = tryssl;
sendUrl = function sendUrl(form, path) {
var form_url;
form_url = form.attr('action');
if (form_url.match(/^#$/)) {
form_url = path;
} else {
form_url = form_url + path;
}
console.debug('form action URL -> ', form_url);
form.attr('action', form_url);
return form.submit();
};
$(document).ready(function () {
if (!window._ssl_js_done) {
window._ssl_js_done = true;
return $('.sslclick').on('click', tryssl);
}
});
})();