From a991302777e6e7853c0ee810394801a61d4e9fb7 Mon Sep 17 00:00:00 2001 From: brantje Date: Sun, 25 Sep 2016 16:18:18 +0200 Subject: [PATCH] Working passman import --- css/app.css | 7 +++ css/app.css.map | 2 +- js/app/app.js | 15 +++-- js/app/controllers/import.js | 52 ++++++++++++++-- js/app/directives/autoscroll.js | 22 +++++++ js/importers/import-main.js | 10 +++- js/importers/importer-dashlanecsv.js | 4 +- js/importers/importer-lastpasscsv.js | 6 +- js/importers/importer-passmanjson.js | 60 +++++++++++++++++++ js/importers/importer-zohocsv.js | 30 ++++++++++ js/templates.js | 2 +- sass/settings.scss | 9 +++ templates/main.php | 3 + .../views/partials/forms/settings/import.html | 30 +++++++--- 14 files changed, 229 insertions(+), 23 deletions(-) create mode 100644 js/app/directives/autoscroll.js create mode 100644 js/importers/importer-passmanjson.js create mode 100644 js/importers/importer-zohocsv.js diff --git a/css/app.css b/css/app.css index f021f28f..c8a0296d 100644 --- a/css/app.css +++ b/css/app.css @@ -371,6 +371,13 @@ padding-left: 0px; padding-right: 15px; } +.import_log { + max-height: 600px; + overflow-y: auto; } + .import_log textarea { + width: 90%; + height: 200px; } + #app-settings-content:not(.ng-hide) { height: 60px; display: inherit !important; diff --git a/css/app.css.map b/css/app.css.map index e30d491a..9ddc270d 100644 --- a/css/app.css.map +++ b/css/app.css.map @@ -1,6 +1,6 @@ { "version": 3, -"mappings": "AAAA,YAAY;EACV,UAAU,EAAE,OAAO;EACnB,KAAK,EAAE,IAAI;;AAEb,kBAAkB;EAChB,UAAU,EAAE,OAAoB;EAChC,KAAK,EAAE,IAAI;;AAGb,WAAW;EACT,UAAU,EAAE,OAAO;EACnB,KAAK,EAAE,IAAI;;AAEb,iBAAiB;EACf,UAAU,EAAE,OAAoB;EAChC,KAAK,EAAE,IAAI;;AAEb,KAAK;EACH,KAAK,EAAE,kBAA2B;EAClC,MAAM,EAAE,OAAO;;AAEjB,WAAW;EACT,eAAe,EAAE,SAAS;;ACtB5B,WAAY;EACV,MAAM,EAAE,QAAQ;EAChB,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,CAAC;EACV,8BAAmB;IACjB,WAAW,EAAE,CAAC;EAEhB,kBAAO;IACL,oCAAoC;IACpC,KAAK,EAAE,IAAI;IACX,mBAAmB,EAAE,CAAC;IACtB,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,mBAAmB;IAC5B,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,OAAO;IACf,YAAY,EAAE,cAAc;IAC5B,kBAAkB,EAAE,6BAA6B;IACjD,eAAe,EAAE,6BAA6B;IAC9C,aAAa,EAAE,6BAA6B;IAC5C,cAAc,EAAE,6BAA6B;IAC7C,UAAU,EAAE,6BAA6B;EAE3C,qBAAU;IACR,gBAAgB,EAAE,kBAAkB;IACpC,KAAK,EAAE,IAAI;;AAIf,cAAe;EACb,MAAM,EAAE,SAAS;EACjB,YAAY,EAAE,IAAI;EAClB,gBAAgB,EAAE,OAAO;EACzB,aAAa,EAAE,CAAC;EAChB,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,KAAK;;AClChB,OAAO;EACL,QAAQ,EAAC,MAAM;EACf,aAAK;IACH,KAAK,EAAE,4BAA4B;IACnC,KAAK,EAAE,IAAI;IACX,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,OAAO;IACpB,MAAM,EAAE,cAAc;IACtB,OAAO,EAAE,IAAI;IACb,aAAa,EAAE,GAAG;IAClB,MAAM,EAAE,aAAa;IACrB,OAAO,EAAE,WAAW;IACpB,SAAS,EAAE,IAAI;ICYjB,kCAAkC,EDXH,CAAC;ICYhC,0BAA0B,EDZK,CAAC;ICahC,+BAA+B,EDbA,CAAC;ICchC,uBAAuB,EDdQ,CAAC;ICehC,eAAe,EAAE,WAAW;EDb5B,oBAAY;IACV,KAAK,EAAE,IAAI;IACX,UAAU,EAAE,GAAG;IACf,WAAW,EAAE,IAAI;IACjB,0BAAK;MACH,OAAO,EAAE,GAAG;MACZ,OAAO,EAAE,YAAY;MACrB,SAAS,EAAE,IAAI;MACf,MAAM,EAAE,cAAc;MACtB,gBAAgB,EAAE,OAAiB;MACnC,MAAM,EAAE,OAAO;IAEjB,gCAAW;MACT,KAAK,EAAE,OAAgB;IAEzB,qCAAgB;MCNlB,kCAAkC,EDOD,GAAG;MCNpC,0BAA0B,EDMO,GAAG;MCLpC,+BAA+B,EDKE,GAAG;MCJpC,uBAAuB,EDIU,GAAG;MCHpC,eAAe,EAAE,WAAW;;AC7B9B,cAAc;EACZ,MAAM,EAAE,MAAM;EACd,UAAU,EAAE,IAAI;EAChB,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,KAAK;EDMhB,qBAAqB,ECLE,GAAG;EDM1B,aAAa,ECNU,GAAG;EDO1B,eAAe,EAAE,WAAW;EAAG,qDAAqD;ECNpF,UAAU,EAAE,cAAc;EAC1B,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,KAAK;EACd,yBAAU;IAER,OAAO,EAAE,GAAG;IACZ,4HAAiB;MACf,MAAM,EAAE,OAAO;IAEjB,+BAAK;MACH,KAAK,EAAE,OAAO;IAEhB,qCAAW;MACT,gBAAgB,EAAE,kBAAkB;MACpC,KAAK,EAAE,IAAI;IAEb,4BAAE;MACA,aAAa,EAAE,iBAAiB;MAChC,OAAO,EAAE,IAAI;IAEf,kCAAQ;MACN,gBAAgB,EAAE,OAAO;EAG7B,0BAAW;IACT,OAAO,EAAE,IAAI;IACb,iCAAM;MACJ,KAAK,EAAE,OAAO;IAGd,iDAAY;MACV,KAAK,EAAE,OAAO;IAGlB,gGAA0C;MACxC,KAAK,EAAE,IAAI;MD/Bf,qBAAqB,ECgCM,GAAG;MD/B9B,aAAa,EC+Bc,GAAG;MD9B9B,eAAe,EAAE,WAAW;MAAG,qDAAqD;ICiChF,kDAAO;MACL,KAAK,EAAE,GAAG;MACV,OAAO,EAAE,YAAY;IAGzB,kCAAO;MACL,UAAU,EAAE,IAAI;;AAKtB,oCAAoC;EAClC,cAAc;IACZ,KAAK,EAAE,GAAG;AC3Dd,YAAa;EACX,UAAU,EAAE,MAAM;EAClB,iCAAqB;IACnB,UAAU,EAAE,GAAG;IACf,2CAAS;MACP,aAAa,EAAE,iBACjB;IACA,oDAAmB;MAEjB,QAAQ,EAAE,MAAM;MAChB,4DAAQ;QACN,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,KAAK;QFDlB,qBAAqB,EEEQ,GAAG;QFDhC,aAAa,EECgB,GAAG;QFAhC,eAAe,EAAE,WAAW;QAAG,qDAAqD;QEC9E,UAAU,EAAE,gCAA+B;QAEzC,kEAAG;UACD,YAAY,EAAE,IAAI;QAEpB,yEAAU;UACR,SAAS,EAAE,IAAI;UACf,OAAO,EAAE,MAAM;MAIrB,kEAAc;QACZ,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,IAAI;QACV,GAAG,EAAE,KAAK;MAEZ,2DAAM;QACJ,KAAK,EAAE,mBAAmB;QAC1B,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,YAAY;QACrB,WAAW,EAAE,IAAI;MAEnB,wEAAmB;QACjB,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,CAAC;QAGN,mFAAU;UACR,OAAO,EAAE,YAAY;IAK3B,mDAAkB;MAChB,KAAK,EAAE,IAAI;MACX,UAAU,EAAE,IAAI;MAChB,4DAAS;QACP,gBAAgB,EAAE,UAAgB;MAGlC,+DAAW;QACT,gBAAgB,EAAE,OAAO;MAE3B,yDAAG;QACD,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,GAAG;QACZ,aAAa,EAAE,iBAAiB;QAChC,+DAAK;UACH,SAAS,EAAE,IAAI;UACf,KAAK,EAAE,IAAI;UACX,YAAY,EAAE,GAAG;UACjB,WAAW,EAAE,GAAG;QAElB,+DAAM;UACJ,KAAK,EAAE,KAAK;UACZ,oEAAK;YACH,gBAAgB,EAAE,wBAAuB;YACzC,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,GAAG;YF/D7B,qBAAqB,EEgEc,GAAG;YF/DtC,aAAa,EE+DsB,GAAG;YF9DtC,eAAe,EAAE,WAAW;YAAG,qDAAqD;UEgE1E,+EAAe;YACb,YAAY,EAAE,GAAG;QAGrB,oEAAW;UACT,OAAO,EAAE,YAAY;UACrB,KAAK,EAAE,KAAK;UACZ,WAAW,EAAE,GAAG;UAChB,UAAU,EAAE,GAAG;UACf,OAAO,EAAE,GAAG;UACZ,MAAM,EAAE,IAAI;UACZ,KAAK,EAAE,IAAI;UACX,MAAM,EAAE,OAAO;QAEjB,0EAAiB;UACf,OAAO,EAAE,CAAC;QAEZ,sEAAa;UACX,UAAU,EAAE,IAAI;UAChB,MAAM,EAAE,KAAK;UACb,KAAK,EAAE,KAAK;UACZ,KAAK,EAAE,eAAe;UACtB,UAAU,EAAE,gCAA+B;UAC3C,yEAAG;YACD,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,IAAI;YACZ,4EAAG;cACD,OAAO,EAAE,GAAG;YAEd,mFAAU;cACR,SAAS,EAAE,IAAI;cACf,OAAO,EAAE,MAAM;UAGnB,8EAAQ;YACN,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,KAAK;IAQrB,wDAAM;MACJ,OAAO,EAAE,KAAK;IAEhB,gJAA2C;MACzC,KAAK,EAAE,IAAI;IAEb,wDAAM;MACJ,KAAK,EAAE,IAAI;MACX,6DAAK;QACH,gBAAgB,EAAE,wBAAuB;QACzC,OAAO,EAAE,GAAG;QACZ,SAAS,EAAE,IAAI;IAIjB,mEAAM;MACJ,KAAK,EAAE,IAAI;IAKf,uEAAqB;MACnB,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,KAAK;IAGb,2EAAM;MACJ,QAAQ,EAAE,MAAM;MAChB,kGAAuB;QACrB,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,IAAI;MAEb,kFAAO;QAIL,KAAK,EAAE,IAAI;QAHX,qFAAK;UACH,SAAS,EAAE,IAAI;IAMvB,4HAAuB;MACrB,UAAU,EAAE,IAAI;MAChB,wIAAM;QACJ,KAAK,EAAE,IAAI;QAET,0JAAG;UACD,KAAK,EAAE,IAAI;QAEb,sLAAiB;UACf,KAAK,EAAE,GAAG;QAGd,0JAAS;UACP,gBAAgB,EAAE,WAAW;QAG7B,gLAAiB;UACf,SAAS,EAAE,IAAI;UACf,KAAK,EAAE,GAAG;UACV,oLAAE;YACA,MAAM,EAAE,OAAO;QAGnB,0SAAO;UACL,KAAK,EAAE,GAAG;UACV,OAAO,EAAE,GAAG;UACZ,8bAAqC;YACnC,KAAK,EAAE,GAAG;QAGd,oJAAG;UACD,MAAM,EAAE,IAAI;UACZ,cAAc,EAAE,MAAM;IAM5B,sEAAU;MACR,UAAU,EAAE,IAAI;MAChB,MAAM,EAAE,IAAI;MACZ,oFAAc;QACZ,MAAM,EAAE,IAAI;QACZ,gBAAgB,EAAE,IAAI;QACtB,gBAAgB,EAAE,OAAO;IAKjC,8CAAa;MAOX,OAAO,EAAE,IAAI;MAKb,UAAU,EAAE,IAAI;MAXhB,gEAAkB;QAChB,QAAQ,EAAE,QAAQ;QAClB,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,OAAO;MAGjB,4DAAgB;QACd,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,YAAY;MAGvB,oDAAM;QACJ,KAAK,EAAE,IAAI;QACX,aAAa,EAAE,IAAI;QACnB,6DAAS;UACP,gBAAgB,EAAE,IAAI;QAMtB,0DAAG;UACD,OAAO,EAAE,GAAG;UACZ,KAAK,EAAE,IAAI;UACX,WAAW,EAAE,MAAM;UACnB,MAAM,EAAE,IAAI;UACZ,cAAc,EAAE,MAAM;MAK5B,oDAAM;QACJ,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,IAAI;QACnB,yDAAK;UACH,gBAAgB,EAAE,wBAAuB;UACzC,OAAO,EAAE,GAAG;UACZ,YAAY,EAAE,GAAG;;AAQ3B,iBAAkB;EAChB,QAAQ,EAAE,MAAM;EAChB,iDAAc;IACZ,KAAK,EAAE,IAAI;EAEb,wBAAO;IACL,WAAW,EAAE,IAAI;IACjB,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,IAAI;IACX,8BAAM;MACJ,MAAM,EAAE,OAAO;MACf,YAAY,EAAE,GAAG;;AC5QrB,uBAAI;EACF,YAAY,EAAE,IAAI;;AAKtB,aAAc;EACZ,QAAQ,EAAE,gBAAgB;EAC1B,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,kBAAkB;EACzB,gBAAgB,EAAE,IAAI;EACtB,YAAY,EAAE,cAAc;EAC5B,eAAE;IACA,OAAO,EAAE,MAAM;IACf,mBAAI;MACF,YAAY,EAAE,IAAI;;AAOpB,6BAAU;EACR,OAAO,EAAE,CAAC;AAEZ,oBAAC;EACC,QAAQ,EAAE,OAAO;EACjB,+BAAU;IACR,OAAO,EAAE,GAAG;IACZ,kCAAE;MACA,KAAK,EAAE,eAAe;AAK9B,uBAAQ;EACN,OAAO,EAAE,kBAAkB;;ACpC7B,6BAAc;EACZ,KAAK,EAAE,GAAG;EAER,8CAAM;IACJ,KAAK,EAAE,IAAI;EAMf,2CAAa;IACX,UAAU,EAAE,IAAI;;AAItB,MAAM;EACJ,KAAK,EAAE,IAAI;;ACjBb,kBAAkB;EAChB,UAAU,EAAE,IAAI;EAChB,yBAAM;IACJ,YAAY,EAAE,GAAG;IACjB,aAAa,EAAE,IAAI;;ACSvB,mCAAoC;EAClC,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,kBAAkB;EAC3B,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,qBAAqB;;AAEnC,6BAA6B;EAC3B,OAAO,EAAE,kBAAkB;EAC3B,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,oBAAoB;;AAElC,UAAU;EACR,OAAO,EAAE,IAAI;;AAGb,kBAAI;EACF,WAAW,EAAE,YAAY;EACzB,YAAY,EAAE,YAAY", +"mappings": "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", "sources": ["../sass/partials/button.scss","../sass/partials/tabs.scss","../sass/partials/pwgen.scss","../sass/mixins.scss","../sass/vaults.scss","../sass/credentials.scss","../sass/menu.scss","../sass/share_credential.scss","../sass/settings.scss","../sass/app.scss"], "names": [], "file": "app.css" diff --git a/js/app/app.js b/js/app/app.js index b0c38c4f..ac773a33 100644 --- a/js/app/app.js +++ b/js/app/app.js @@ -88,7 +88,7 @@ jQuery(document).ready(function () { angular.element('#app-content-wrapper').scope().deleteCredential(credential); angular.element('#app-content-wrapper').scope().$apply(); }); - var adjustControlsWidth = function() { + var adjustControlsWidth = function(r) { if($('#controls').length) { var controlsWidth; // if there is a scrollbar … @@ -111,12 +111,17 @@ jQuery(document).ready(function () { controlsWidth = $('#content').width(); } } - $('#controls').css('width', controlsWidth); - $('#controls').css('min-width', controlsWidth); + if(r){ + var magic = 0; + } else { + var magic = 85; + } + $('#controls').css('width', controlsWidth+magic); + $('#controls').css('min-width', controlsWidth+magic); } }; - $(window).resize(_.debounce(adjustControlsWidth, 256)); + $(window).resize(_.debounce(adjustControlsWidth, 400)); setTimeout(function(){ - adjustControlsWidth() + adjustControlsWidth(true) },200) }); \ No newline at end of file diff --git a/js/app/controllers/import.js b/js/app/controllers/import.js index 697287dc..ba36159b 100644 --- a/js/app/controllers/import.js +++ b/js/app/controllers/import.js @@ -8,11 +8,12 @@ * Controller of the passmanApp */ angular.module('passmanApp') - .controller('ImportCtrl', ['$scope', '$window', function ($scope, $window) { + .controller('ImportCtrl', ['$scope', '$window', 'CredentialService', 'VaultService', function ($scope, $window, CredentialService, VaultService) { //@TODo read the available importers from $window.PassmanImporter $scope.available_importers = [ ]; + $scope.active_vault = VaultService.getActiveVault(); $scope.$watch(function(){ @@ -25,16 +26,21 @@ angular.module('passmanApp') } } }, true); - + $scope.log = []; $scope.setImporter = function (importer) { importer = JSON.parse(importer); $scope.selectedImporter = importer; }; + var _log = function(str){ + $scope.log.push(str); + }; var file_data; $scope.fileLoaded = function (file) { file_data = file.data.split(','); file_data = decodeURIComponent(escape(window.atob( file_data[1] ))); //window.atob(); + _log('File read successfully!') + $scope.$apply(); }; $scope.fileLoadError = function (file) { @@ -44,11 +50,49 @@ angular.module('passmanApp') }; + var parsed_data; + $scope.current_import_index = 0; + $scope.current_import_length = 0; + var addCredential = function(parsed_data_index){ + if(!parsed_data[parsed_data_index]){ + return; + } + var _credential = parsed_data[parsed_data_index]; + if(!_credential.label){ + if(parsed_data[ parsed_data_index +1]) { + _log('Credential has no label, skipping'); + addCredential(parsed_data_index +1) + } + return + } + _log('Adding '+ _credential.label); + $scope.current_import_index = parsed_data_index; + _credential.vault_id = $scope.active_vault.vault_id; + CredentialService.createCredential(_credential).then(function (result) { + if(result.credential_id){ + _log('Added '+ _credential.label); + if(parsed_data[ parsed_data_index +1]) { + addCredential(parsed_data_index +1) + } else { + _log('DONE!'); + } + } + }) + }; + $scope.startImport = function(){ if(file_data){ - var parsed_data = $window.PassmanImporter[$scope.selectedImporter.id].readFile(file_data); - console.log('Data parsed!', parsed_data); + parsed_data = $window.PassmanImporter[$scope.selectedImporter.id].readFile(file_data); + _log('Parsed '+ parsed_data.length + ' credentials, starting to import'); + $scope.current_import_length = parsed_data.length; + if( parsed_data.length > 0){ + addCredential(0); + } else { + // @TODO Show message no data found + } + } } + }]); diff --git a/js/app/directives/autoscroll.js b/js/app/directives/autoscroll.js new file mode 100644 index 00000000..a86a9d09 --- /dev/null +++ b/js/app/directives/autoscroll.js @@ -0,0 +1,22 @@ +'use strict'; + +/** + * @ngdoc directive + * @name passmanApp.directive:autoScroll + * @description + * # autoScroll + */ +angular.module('passmanApp') + .directive('autoScroll', function () { + return { + restrict: 'A', + scope: { + autoScroll: '=' + }, + link: function postLink(scope, element, attrs) { + scope.$watch('autoScroll', function () { + $('#import_log').scrollTop($('#import_log')[0].scrollHeight); + }, true); + } + }; + }); diff --git a/js/importers/import-main.js b/js/importers/import-main.js index a8e62d5d..9d7625d4 100644 --- a/js/importers/import-main.js +++ b/js/importers/import-main.js @@ -24,7 +24,11 @@ PassmanImporter.parseRow_ = function(row, isHeading) { } return row; }; - +PassmanImporter.htmlDecode = function(input){ + var e = document.createElement('div'); + e.innerHTML = input; + return e.childNodes[0].nodeValue; +}; PassmanImporter.toObject_ = function(headings, row) { var result = {}; for (var i = 0, ii = row.length; i < ii; i++) { @@ -87,4 +91,8 @@ PassmanImporter.readCsv = function( csv, hasHeadings ){ } } return lines; +}; + +PassmanImporter.readJson = function (string){ + return JSON.parse(string); }; \ No newline at end of file diff --git a/js/importers/importer-dashlanecsv.js b/js/importers/importer-dashlanecsv.js index 2ff9e8a5..1129eb98 100644 --- a/js/importers/importer-dashlanecsv.js +++ b/js/importers/importer-dashlanecsv.js @@ -31,7 +31,9 @@ PassmanImporter.dashLaneCsv.readFile = function (file_data) { _credential.password = row_data[row_data.length - 2]; _credential.url = row_data[0]; _credential.description = row_data[row_data.length - 1]; - credential_list.push(_credential); + if(_credential.label){ + credential_list.push(_credential); + } } return credential_list; }; \ No newline at end of file diff --git a/js/importers/importer-lastpasscsv.js b/js/importers/importer-lastpasscsv.js index 047ba061..cd7a3490 100644 --- a/js/importers/importer-lastpasscsv.js +++ b/js/importers/importer-lastpasscsv.js @@ -17,13 +17,15 @@ PassmanImporter.lastpassCsv.readFile = function (file_data) { for (var i = 0; i < parsed_csv.length; i++) { var row = parsed_csv[i]; var _credential = PassmanImporter.newCredential(); - _credential.label = row.name; + _credential.label = PassmanImporter.htmlDecode(row.name); _credential.username = row.username; _credential.password = row.password; _credential.url = row.url; _credential.tags = [{text: row.grouping}]; _credential.description = row.extra; - credential_list.push(_credential); + if(_credential.label){ + credential_list.push(_credential); + } } return credential_list; }; \ No newline at end of file diff --git a/js/importers/importer-passmanjson.js b/js/importers/importer-passmanjson.js new file mode 100644 index 00000000..478e2e41 --- /dev/null +++ b/js/importers/importer-passmanjson.js @@ -0,0 +1,60 @@ +// Importers should always start with this +if (!window['PassmanImporter']) { + var PassmanImporter = {} +} +// Define the importer +PassmanImporter.passmanJson = { + info: { + name: 'Passman JSON', + id: 'passmanJson', + description: 'Export the item in passman as passman json, with all fields enabled' + } +}; + +PassmanImporter.passmanJson.readFile = function (file_data) { + var parsed_json = PassmanImporter.readJson(file_data); + var credential_list = []; + for (var i = 0; i < parsed_json.length; i++) { + var item = parsed_json[i]; + var _credential = PassmanImporter.newCredential(); + _credential.label = item.label; + _credential.username = item.account; + _credential.password = item.password; + _credential.email = item.email; + _credential.url = item.url; + _credential.tags = item.tags; + //Check for custom fields + if (item.hasOwnProperty('customFields')) { + //Check for otp + if (item.customFields.length > 0) { + for (var cf = 0; cf < item.customFields.length; cf++) { + _credential.custom_fields.push( + { + 'label': item.customFields[cf].label, + 'value': item.customFields[cf].value, + 'secret': (item.customFields[cf].clicktoshow == '1') + } + ) + } + } + } + if (item.hasOwnProperty('otpsecret')) { + if (item.otpsecret) { + _credential.otp = { + 'issuer': item.otpsecret.issuer, + 'label': item.otpsecret.label, + 'qr_uri': { + 'image': item.otpsecret.qrCode, + 'qrData': '' + }, + 'secret': item.otpsecret.secret, + 'type': item.otpsecret.type + } + } + } + if(_credential.label){ + credential_list.push(_credential); + } + } + return credential_list; +}; \ No newline at end of file diff --git a/js/importers/importer-zohocsv.js b/js/importers/importer-zohocsv.js new file mode 100644 index 00000000..dc352aa5 --- /dev/null +++ b/js/importers/importer-zohocsv.js @@ -0,0 +1,30 @@ +// Importers should always start with this +if (!window['PassmanImporter']) { + var PassmanImporter = {} +} +// Define the importer +PassmanImporter.zohoCsv = { + info: { + name: 'ZOHO csv', + id: 'zohoCsv', + description: 'Create an csv export. Go to Tools -> Export secrets -> Select "General CSV" and click "Export Secrets"' + } +}; + +PassmanImporter.zohoCsv.readFile = function (file_data) { + var parsed_csv = PassmanImporter.readCsv(file_data, false); + var credential_list = []; + for (var i = 0; i < parsed_csv.length; i++) { + var row = parsed_csv[i]; + var _credential = PassmanImporter.newCredential(); + _credential.label = row[0]; + _credential.username = row[3]; + _credential.password = row[4]; + _credential.url = row[1]; + _credential.description = row[2]; + if(_credential.label){ + credential_list.push(_credential); + } + } + return credential_list; +}; \ No newline at end of file diff --git a/js/templates.js b/js/templates.js index c1f46d67..560c9529 100644 --- a/js/templates.js +++ b/js/templates.js @@ -57,7 +57,7 @@ angular.module('views/partials/forms/settings/general_settings.html', []).run([' angular.module('views/partials/forms/settings/import.html', []).run(['$templateCache', function($templateCache) { 'use strict'; $templateCache.put('views/partials/forms/settings/import.html', - '
{{selectedImporter.description}}

'); + '
{{selectedImporter.description}}

{{ current_import_index }} / {{ current_import_length - 1}}
'); }]); angular.module('views/partials/forms/settings/tool.html', []).run(['$templateCache', function($templateCache) { diff --git a/sass/settings.scss b/sass/settings.scss index 78a5aa20..355b8997 100644 --- a/sass/settings.scss +++ b/sass/settings.scss @@ -4,4 +4,13 @@ padding-left: 0px; padding-right: 15px; } +} + +.import_log { + max-height: 600px; + overflow-y: auto; + textarea{ + width: 90%; + height: 200px; + } } \ No newline at end of file diff --git a/templates/main.php b/templates/main.php index ade76222..78d78f71 100644 --- a/templates/main.php +++ b/templates/main.php @@ -58,10 +58,13 @@ script('passman', 'app/directives/tooltip'); script('passman', 'app/directives/use-theme'); script('passman', 'app/directives/credentialfield'); script('passman', 'app/directives/ngenter'); +script('passman', 'app/directives/autoscroll'); script('passman', 'importers/import-main'); script('passman', 'importers/importer-keepasscsv'); script('passman', 'importers/importer-lastpasscsv'); script('passman', 'importers/importer-dashlanecsv'); +script('passman', 'importers/importer-zohocsv'); +script('passman', 'importers/importer-passmanjson'); /* * Styles diff --git a/templates/views/partials/forms/settings/import.html b/templates/views/partials/forms/settings/import.html index 36d8015c..eba5ddaf 100644 --- a/templates/views/partials/forms/settings/import.html +++ b/templates/views/partials/forms/settings/import.html @@ -1,15 +1,29 @@
-
+
+
{{selectedImporter.description}}
-
- +
+ +
+ {{ current_import_index }} / {{ current_import_length - 1}} +
+
+
+
+ +
\ No newline at end of file