From 31e4aa1a7d2a78f2d09ff61b38718969b15784d1 Mon Sep 17 00:00:00 2001 From: hkernbach Date: Tue, 25 Apr 2017 09:27:08 +0200 Subject: [PATCH] ui: fixed login windows showing wrong available dbs --- .../APP/frontend/js/views/loginView.js | 95 ++++++++++++++----- 1 file changed, 73 insertions(+), 22 deletions(-) diff --git a/js/apps/system/_admin/aardvark/APP/frontend/js/views/loginView.js b/js/apps/system/_admin/aardvark/APP/frontend/js/views/loginView.js index 6cee426ef8..2108889a54 100644 --- a/js/apps/system/_admin/aardvark/APP/frontend/js/views/loginView.js +++ b/js/apps/system/_admin/aardvark/APP/frontend/js/views/loginView.js @@ -44,22 +44,52 @@ $('.login-window #databases').show(); $.ajax(url).success(function (permissions) { - // enable db select and login button - $('#loginDatabase').html(''); - // fill select with allowed dbs - _.each(permissions.result, function (rule, db) { - if (errCallback) { - $('#loginDatabase').append( - '' - ); - } else { - $('#loginDatabase').append( - '' - ); - } - }); + var successFunc = function (availableDbs) { + // enable db select and login button + $('#loginDatabase').html(''); + // fill select with allowed dbs + _.each(permissions.result, function (rule, db) { + if (errCallback) { + if (availableDbs) { + if (availableDbs.indexOf(db) > -1) { + $('#loginDatabase').append( + '' + ); + } + } else { + $('#loginDatabase').append( + '' + ); + } + } else { + if (availableDbs) { + if (availableDbs.indexOf(db) > -1) { + $('#loginDatabase').append( + '' + ); + } + } else { + $('#loginDatabase').append( + '' + ); + } + } + }); - self.renderDBS(); + self.renderDBS(); + }; + + // fetch available dbs + var availableDbs; + try { + $.ajax(arangoHelper.databaseUrl('/_api/database/user')).success(function (dbs) { + availableDbs = dbs.result; + successFunc(availableDbs); + }); + } catch (ignore) { + console.log(ignore); + successFunc(); + } }).error(function () { if (errCallback) { errCallback(); @@ -191,14 +221,35 @@ // enable db select and login button $('#loginDatabase').html(''); - // fill select with allowed dbs - _.each(permissions.result, function (db, key) { - $('#loginDatabase').append( - '' - ); - }); + var successFunc = function (availableDbs) { + if (availableDbs) { + _.each(permissions.result, function (db, key) { + if (availableDbs.indexOf(key) > -1) { + $('#loginDatabase').append( + '' + ); + } + }); + } else { + // fill select with allowed dbs + _.each(permissions.result, function (db, key) { + $('#loginDatabase').append( + '' + ); + }); + } - self.renderDBS(); + self.renderDBS(); + }; + + // fetch available dbs + try { + $.ajax(arangoHelper.databaseUrl('/_api/database/user')).success(function (dbs) { + successFunc(dbs.result); + }); + } catch (ignore) { + successFunc(); + } }).error(function () { $('.wrong-credentials').show(); });