lemonldap-ng/lemonldap-ng-portal/site/htdocs/static/common/js/u2fregistration.js

127 lines
3.6 KiB
JavaScript
Raw Normal View History

// Generated by CoffeeScript 1.12.8
2017-02-02 22:48:32 +01:00
/*
LemonLDAP::NG U2F registration script
*/
(function() {
var displayError, register, setMsg, verify;
2017-02-08 19:10:06 +01:00
setMsg = function(msg, level) {
$('#msg').html(window.translate(msg));
2018-09-02 11:23:01 +02:00
$('#color').removeClass('message-positive message-warning message-danger alert-success alert-warning alert-danger');
2017-02-08 19:10:06 +01:00
$('#color').addClass("message-" + level);
if (level === 'positive') {
level = 'success';
}
return $('#color').addClass("alert-" + level);
};
2017-02-02 22:48:32 +01:00
displayError = function(j, status, err) {
var res;
console.log('Error', err);
res = JSON.parse(j.responseText);
if (res && res.error) {
res = res.error.replace(/.* /, '');
console.log('Returned error', res);
return setMsg(res, 'warning');
}
};
2017-02-02 22:48:32 +01:00
register = function() {
2017-02-08 19:10:06 +01:00
return $.ajax({
type: "POST",
url: portal + "2fregisters/u/register",
2017-02-08 19:10:06 +01:00
data: {},
dataType: 'json',
error: displayError,
2017-02-08 19:10:06 +01:00
success: function(ch) {
var request;
request = [
{
challenge: ch.challenge,
version: ch.version
}
];
setMsg('touchU2fDevice', 'positive');
$('#u2fPermission').show();
return u2f.register(ch.appId, request, [], function(data) {
$('#u2fPermission').hide();
if (data.errorCode) {
return setMsg(data.error, 'warning');
2017-02-08 19:10:06 +01:00
} else {
return $.ajax({
type: "POST",
url: portal + "2fregisters/u/registration",
2017-02-08 19:10:06 +01:00
data: {
2018-03-06 22:50:40 +01:00
registration: JSON.stringify(data),
challenge: JSON.stringify(ch),
keyName: $('#keyName').val()
2017-02-08 19:10:06 +01:00
},
dataType: 'json',
success: function(resp) {
if (resp.error) {
2018-08-31 19:10:35 +02:00
if (resp.error.match(/badName/)) {
2018-09-02 11:23:01 +02:00
return setMsg(resp.error, 'warning');
2018-08-31 19:10:35 +02:00
} else {
2018-09-02 11:23:01 +02:00
return setMsg('u2fFailed', 'danger');
2018-08-31 19:10:35 +02:00
}
2017-02-08 19:10:06 +01:00
} else if (resp.result) {
2018-03-21 07:23:13 +01:00
return setMsg('yourKeyIsRegistered', 'positive');
2017-02-08 19:10:06 +01:00
}
},
error: displayError
2017-02-08 19:10:06 +01:00
});
}
});
}
});
};
verify = function() {
return $.ajax({
type: "POST",
url: portal + "2fregisters/u/verify",
2017-02-08 19:10:06 +01:00
data: {},
dataType: 'json',
error: displayError,
2017-02-08 19:10:06 +01:00
success: function(ch) {
setMsg('touchU2fDevice', 'positive');
2018-04-20 16:15:26 +02:00
return u2f.sign(ch.appId, ch.challenge, ch.registeredKeys, function(data) {
2017-02-08 19:10:06 +01:00
if (data.errorCode) {
2018-04-17 22:40:34 +02:00
return setMsg('unableToGetKey', 'warning');
2017-02-08 19:10:06 +01:00
} else {
return $.ajax({
type: "POST",
url: portal + "2fregisters/u/signature",
2017-02-08 19:10:06 +01:00
data: {
signature: JSON.stringify(data),
challenge: ch.challenge
2017-02-08 19:10:06 +01:00
},
dataType: 'json',
success: function(resp) {
if (resp.error) {
2018-09-02 11:23:01 +02:00
return setMsg('u2fFailed', 'danger');
2017-02-08 19:10:06 +01:00
} else if (resp.result) {
2018-03-21 07:23:13 +01:00
return setMsg('yourKeyIsVerified', 'positive');
2017-02-08 19:10:06 +01:00
}
},
error: function(j, status, err) {
return console.log('error', err);
}
});
}
});
2017-02-03 18:14:13 +01:00
}
2017-02-02 22:48:32 +01:00
});
};
$(document).ready(function() {
2017-02-08 19:10:06 +01:00
$('#u2fPermission').hide();
$('#register').on('click', register);
2018-03-06 22:50:40 +01:00
$('#verify').on('click', verify);
2017-02-08 19:10:06 +01:00
return $('#goback').attr('href', portal);
2017-02-02 22:48:32 +01:00
});
}).call(this);