Skip to content

Commit

Permalink
Merge pull request #14 from tarioch/master
Browse files Browse the repository at this point in the history
Switch to newer u2f-api.js
  • Loading branch information
darookee authored Nov 28, 2016
2 parents ab46894 + ce3b193 commit 468a93a
Show file tree
Hide file tree
Showing 6 changed files with 834 additions and 688 deletions.
106 changes: 75 additions & 31 deletions Resources/public/js/auth.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,21 @@
var ready = function(fn) {
'use strict';

var u2fauth = u2fauth || {};

u2fauth.formId = 'u2fForm';
u2fauth.authCodeId = '_auth_code';
u2fauth.keynameId = 'u2fkeyname';
u2fauth.pressButtonId = 'u2fpressbutton';
u2fauth.errorId = 'u2fError';
u2fauth.errorTranslation = {
1: 'Unknown Error',
2: 'Bad Request',
3: 'Client configuration not supported',
4: 'Device already registered or ineligible',
5: 'Timeout',
};

u2fauth.ready = function(fn) {
if ('loading' !== document.readyState){
fn();
} else if (document.addEventListener) {
Expand All @@ -11,53 +28,80 @@ var ready = function(fn) {
}
};

var authenticate = function(request, codeField, form) {
u2f.sign(request, function(data){
u2fauth.authenticate = function() {
u2fauth.clearError();
u2fauth.showPressButton();

var form = document.getElementById(u2fauth.formId);
var request = JSON.parse(form.dataset.request);

u2f.sign(request[0].appId, request[0].challenge, request, function(data){
u2fauth.hidePressButton();
if(!data.errorCode) {
codeField.value = JSON.stringify(data);
form.submit();
u2fauth.submit(form, data);
} else {
showError(data.errorCode, function(){authenticate(request, codeField, form);});
u2fauth.showError(data.errorCode, u2fauth.authenticate);
}
});
};

var register = function(request, codeField, form) {
u2f.register([request[0]], request[1], function(data){
u2fauth.register = function() {
u2fauth.clearError();
u2fauth.hideKeyname();
u2fauth.showPressButton();

var form = document.getElementById(u2fauth.formId);
var request = JSON.parse(form.dataset.request);

u2f.register(request[0].appId, [request[0]], request[1], function(data){
u2fauth.hidePressButton();
if(!data.errorCode) {
codeField.value = JSON.stringify(data);
form.submit();
u2fauth.submit(form, data);
} else {
showError(data.errorCode, function(){register(request, codeField, form);});
u2fauth.showError(data.errorCode, u2fauth.register);
}
});
};

var showError = function(error, callback) {
var errorDisplay;
u2fauth.submit = function(form, data) {
var codeField = document.getElementById(u2fauth.authCodeId);
codeField.value = JSON.stringify(data);
form.submit();
}

errorDisplay = document.getElementById('u2fError');
errorDisplay.innerText = error;
errorDisplay.onclick = callback;
};
u2fauth.hideKeyname = function() {
var keyname = document.getElementById(u2fauth.keynameId);
keyname.style.display = 'none';
}

ready(function(){
var form,
codeField,
request,
type;
u2fauth.hidePressButton = function() {
var pressButton = document.getElementById(u2fauth.pressButtonId);
pressButton.style.display = 'none';
}

form = document.getElementById('u2fForm');
codeField = document.getElementById('_auth_code');
u2fauth.showPressButton = function() {
var pressButton = document.getElementById(u2fauth.pressButtonId);
pressButton.style.display = 'block';
}

type = form.dataset.action;
request = JSON.parse(form.dataset.request);
u2fauth.clearError = function() {
var errorDisplay = document.getElementById(u2fauth.errorId);
errorDisplay.style.display = 'none';
errorDisplay.innerText = '';
}

if('auth' === type) {
authenticate(request, codeField, form);
}
u2fauth.showError = function(error, callback) {
var errorDisplay = document.getElementById(u2fauth.errorId);
errorDisplay.style.display = 'block';
errorDisplay.innerText = u2fauth.errorTranslation[error];
errorDisplay.onclick = callback;
};

if('reg' === type) {
register(request, codeField, form);
u2fauth.ready(function(){
var form = document.getElementById('u2fForm');
var type = form.dataset.action;

if('auth' === type) {
u2fauth.authenticate();
}
});
Loading

0 comments on commit 468a93a

Please sign in to comment.