From 3e13fa6d391fb1ed703f1a047c614ed44e29f63a Mon Sep 17 00:00:00 2001 From: binsky Date: Wed, 24 Mar 2021 17:08:26 +0100 Subject: add custom fields file type support to the generic csv importer --- js/app/controllers/generic-csv-importer.js | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'js/app') diff --git a/js/app/controllers/generic-csv-importer.js b/js/app/controllers/generic-csv-importer.js index fc12d054..59185b30 100644 --- a/js/app/controllers/generic-csv-importer.js +++ b/js/app/controllers/generic-csv-importer.js @@ -32,8 +32,8 @@ * Controller of the passmanApp */ angular.module('passmanApp') - .controller('GenericCsvImportCtrl', ['$scope', 'CredentialService', '$translate', - function ($scope, CredentialService, $translate) { + .controller('GenericCsvImportCtrl', ['$scope', 'CredentialService', 'FileService', 'EncryptService', '$translate', '$q', + function ($scope, CredentialService, FileService, EncryptService, $translate, $q) { $scope.hello = 'world'; $scope.credentialProperties = [ @@ -93,7 +93,7 @@ var tagMapper = function (t) { return {text: t}; }; - var rowToCredential = function (row) { + var rowToCredential = async function (row) { var _credential = PassmanImporter.newCredential(); for(var k = 0; k < $scope.import_fields.length; k++){ var field = $scope.import_fields[k]; @@ -124,7 +124,23 @@ // console.error(e); } } else { - _credential.custom_fields = row[k]; + for(var j = 0; j < row[k].length; j++){ + if (row[k][j].field_type === 'file'){ + var _file = { + filename: row[k][j].value.filename, + size: row[k][j].value.size, + mimetype: row[k][j].value.mimetype, + data: row[k][j].value.file_data + }; + + row[k][j].value = await FileService.uploadFile(_file).then(function (result) { + delete result.file_data; + result.filename = EncryptService.decryptString(result.filename); + return result; + }); + } + _credential.custom_fields.push(row[k][j]); + } } } else if(field === 'tags'){ if( row[k]) { @@ -183,7 +199,7 @@ }); }; - var addCredential = function (index) { + var addCredential = async function (index) { function handleState (index) { if ($scope.parsed_csv[index + 1]) { $scope.import_progress = { @@ -204,7 +220,7 @@ } } - var _credential = rowToCredential($scope.parsed_csv[index]); + var _credential = await rowToCredential($scope.parsed_csv[index]); _credential.vault_id = $scope.active_vault.vault_id; if (!_credential.label) { $scope.log.push($translate.instant('import.skipping', {line: index})); -- cgit v1.2.3