From f68f3748d2e369a7748d6918aa1bb7a9af8a6b3e Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Wed, 30 Dec 2015 20:53:43 -0500 Subject: [PATCH] created import service. added local importing. --- src/Vault/wwwroot/_references.js | 1 + .../wwwroot/app/services/importService.js | 134 ++++++++++++++++++ .../wwwroot/app/services/validationService.js | 1 - .../app/settings/views/settingsDelete.html | 2 +- .../app/tools/toolsImportController.js | 83 ++--------- src/Vault/wwwroot/index.html | 1 + 6 files changed, 146 insertions(+), 76 deletions(-) create mode 100644 src/Vault/wwwroot/app/services/importService.js diff --git a/src/Vault/wwwroot/_references.js b/src/Vault/wwwroot/_references.js index b8efe7cb73e..4e73814123c 100644 --- a/src/Vault/wwwroot/_references.js +++ b/src/Vault/wwwroot/_references.js @@ -24,6 +24,7 @@ /// /// /// +/// /// /// /// diff --git a/src/Vault/wwwroot/app/services/importService.js b/src/Vault/wwwroot/app/services/importService.js new file mode 100644 index 00000000000..22bedbce763 --- /dev/null +++ b/src/Vault/wwwroot/app/services/importService.js @@ -0,0 +1,134 @@ +angular + .module('bit.services') + + .factory('importService', function () { + var _service = {}; + + _service.import = function (source, file, success, error) { + switch (source) { + case 'local': + importLocal(file, success, error); + break; + case 'lastpass': + importLastPass(file, success, error); + break; + default: + error(); + break; + } + }; + + function importLocal(file, success, error) { + Papa.parse(file, { + header: true, + complete: function (results) { + var folders = [], + sites = [], + siteRelationships = []; + + angular.forEach(results.data, function (value, key) { + if (!value.uri || value.uri === '') { + return; + } + + var folderIndex = folders.length, + siteIndex = sites.length, + hasFolder = value.folder && value.folder !== '', + addFolder = hasFolder; + + if (hasFolder) { + for (var i = 0; i < folders.length; i++) { + if (folders[i].name == value.folder) { + addFolder = false; + folderIndex = i; + break; + } + } + } + + sites.push({ + uri: value.uri, + username: value.username && value.username !== '' ? value.username : null, + password: value.password, + notes: value.notes && value.notes !== '' ? value.notes : null, + name: value.name + }); + + if (addFolder) { + folders.push({ + name: value.folder + }); + } + + if (hasFolder) { + var relationship = { + key: siteIndex, + value: folderIndex + }; + siteRelationships.push(relationship); + } + }); + + success(folders, sites, siteRelationships); + } + }); + } + + function importLastPass(file, success, error) { + Papa.parse(file, { + header: true, + complete: function (results) { + var folders = [], + sites = [], + siteRelationships = []; + + angular.forEach(results.data, function (value, key) { + if (!value.url || value.url === '') { + return; + } + + var folderIndex = folders.length, + siteIndex = sites.length, + hasFolder = value.grouping && value.grouping !== '' && value.grouping != '(none)', + addFolder = hasFolder; + + if (hasFolder) { + for (var i = 0; i < folders.length; i++) { + if (folders[i].name == value.grouping) { + addFolder = false; + folderIndex = i; + break; + } + } + } + + sites.push({ + uri: value.url, + username: value.username && value.username !== '' ? value.username : null, + password: value.password, + notes: value.extra && value.extra !== '' ? value.extra : null, + name: value.name + }); + + if (addFolder) { + folders.push({ + name: value.grouping + }); + } + + if (hasFolder) { + var relationship = { + key: siteIndex, + value: folderIndex + }; + siteRelationships.push(relationship); + } + }); + + success(folders, sites, siteRelationships); + } + }); + } + + return _service; + }); diff --git a/src/Vault/wwwroot/app/services/validationService.js b/src/Vault/wwwroot/app/services/validationService.js index d328948fb24..a724f5ebecc 100644 --- a/src/Vault/wwwroot/app/services/validationService.js +++ b/src/Vault/wwwroot/app/services/validationService.js @@ -58,6 +58,5 @@ } }; - return _service; }); diff --git a/src/Vault/wwwroot/app/settings/views/settingsDelete.html b/src/Vault/wwwroot/app/settings/views/settingsDelete.html index 7b3212623d6..b79cc80e30b 100644 --- a/src/Vault/wwwroot/app/settings/views/settingsDelete.html +++ b/src/Vault/wwwroot/app/settings/views/settingsDelete.html @@ -1,6 +1,6 @@