From 263474fc373b6daef0d8cf1426c02c4d93a71b1e Mon Sep 17 00:00:00 2001 From: Brian Broll Date: Wed, 5 Aug 2020 12:44:23 -0500 Subject: [PATCH] Add auth to config for gme blob. Fixes #1645 (#1838) * Add auth to config for gme blob. Fixes #1645 * Only ask for access token if not running in the browser --- src/common/storage/backends/gme/Client.js | 3 ++- src/common/storage/backends/gme/metadata.js | 25 +++++++++++++++++++ src/common/storage/backends/gme/metadata.json | 4 --- src/common/storage/index.js | 4 +-- src/common/viz/StorageHelpers.js | 14 ++++++++--- 5 files changed, 40 insertions(+), 10 deletions(-) create mode 100644 src/common/storage/backends/gme/metadata.js delete mode 100644 src/common/storage/backends/gme/metadata.json diff --git a/src/common/storage/backends/gme/Client.js b/src/common/storage/backends/gme/Client.js index 04414f893..d4cecbd23 100644 --- a/src/common/storage/backends/gme/Client.js +++ b/src/common/storage/backends/gme/Client.js @@ -7,9 +7,10 @@ define([ BlobClient ) { - const GMEStorage = function(/*name, logger*/) { + const GMEStorage = function(id, name, logger, config={}) { StorageClient.apply(this, arguments); const params = this.getBlobClientParams(); + params.apiToken = config.apiToken; this.blobClient = new BlobClient(params); }; diff --git a/src/common/storage/backends/gme/metadata.js b/src/common/storage/backends/gme/metadata.js new file mode 100644 index 000000000..670fd9d08 --- /dev/null +++ b/src/common/storage/backends/gme/metadata.js @@ -0,0 +1,25 @@ +/*global define*/ +define([ + 'deepforge/gmeConfig', +], function( + config, +) { + const metadata = { + name: 'WebGME Blob Storage', + configStructure: [] + }; + + + if (config.authentication.enable) { + metadata.configStructure.push({ + name: 'apiToken', + displayName: 'Access Token', + value: '', + valueType: 'string', + readOnly: false, + isAuth: true, + isRequiredForBrowser: false, + }); + } + return metadata; +}); diff --git a/src/common/storage/backends/gme/metadata.json b/src/common/storage/backends/gme/metadata.json deleted file mode 100644 index 7e13cf682..000000000 --- a/src/common/storage/backends/gme/metadata.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "WebGME Blob Storage", - "configStructure": [] -} diff --git a/src/common/storage/index.js b/src/common/storage/index.js index 21d42c9e9..e97caae71 100644 --- a/src/common/storage/index.js +++ b/src/common/storage/index.js @@ -3,7 +3,7 @@ define([ 'module', './backends/StorageBackend', 'text!deepforge/storage/backends/sciserver-files/metadata.json', - 'text!deepforge/storage/backends/gme/metadata.json', + 'deepforge/storage/backends/gme/metadata', 'text!deepforge/storage/backends/s3/metadata.json' ],function( module, @@ -15,7 +15,7 @@ define([ const Storage = {}; const StorageMetadata = {}; StorageMetadata['sciserver-files'] = JSON.parse(sciserverFiles); - StorageMetadata['gme'] = JSON.parse(gme); + StorageMetadata['gme'] = gme; StorageMetadata['s3'] = JSON.parse(s3); const STORAGE_BACKENDS = Object.keys(StorageMetadata); diff --git a/src/common/viz/StorageHelpers.js b/src/common/viz/StorageHelpers.js index 0319a5eb0..5c5febc79 100644 --- a/src/common/viz/StorageHelpers.js +++ b/src/common/viz/StorageHelpers.js @@ -10,11 +10,19 @@ define([ ) { const StorageHelpers = {}; - StorageHelpers.getAuthenticationConfig = async function (dataInfo) { + StorageHelpers.getAuthenticationConfig = async function (dataInfo, runInBrowser=false) { const {backend} = dataInfo; const metadata = Storage.getStorageMetadata(backend); metadata.configStructure = metadata.configStructure - .filter(option => option.isAuth); + .filter(option => { + if (option.isAuth) { + const isRequiredForBrowser = option.isRequiredForBrowser !== false; + const isNodeJs = !runInBrowser; + return isNodeJs || isRequiredForBrowser; + } + return false; + }); + if (metadata.configStructure.length) { const configDialog = new ConfigDialog(); const title = `Authenticate with ${metadata.name}`; @@ -26,7 +34,7 @@ define([ }; StorageHelpers.download = async function (dataInfo, dataName='data') { - const config = await StorageHelpers.getAuthenticationConfig(dataInfo); + const config = await StorageHelpers.getAuthenticationConfig(dataInfo, true); const storageAdapter = await Storage.getClient(dataInfo.backend, null, config); const storageName = Storage.getStorageMetadata(dataInfo.backend).name;