From 8a0d371d2029622a005d2eddc14de44b1a091da3 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Wed, 21 Aug 2019 23:13:08 -0400 Subject: [PATCH] securesafe csv importer --- src/importers/secureSafeCsvImporter.ts | 29 ++++++++++++++++++++++++++ src/services/import.service.ts | 4 ++++ 2 files changed, 33 insertions(+) create mode 100644 src/importers/secureSafeCsvImporter.ts diff --git a/src/importers/secureSafeCsvImporter.ts b/src/importers/secureSafeCsvImporter.ts new file mode 100644 index 000000000..a0cabb5e2 --- /dev/null +++ b/src/importers/secureSafeCsvImporter.ts @@ -0,0 +1,29 @@ +import { BaseImporter } from './baseImporter'; +import { Importer } from './importer'; + +import { ImportResult } from '../models/domain/importResult'; + +export class SecureSafeCsvImporter extends BaseImporter implements Importer { + parse(data: string): ImportResult { + const result = new ImportResult(); + const results = this.parseCsv(data, true); + if (results == null) { + result.success = false; + return result; + } + + results.forEach((value) => { + const cipher = this.initLoginCipher(); + cipher.name = this.getValueOrDefault(value.Title); + cipher.notes = this.getValueOrDefault(value.Comment); + cipher.login.uris = this.makeUriArray(value.Url); + cipher.login.password = this.getValueOrDefault(value.Password); + cipher.login.username = this.getValueOrDefault(value.Username); + this.cleanupCipher(cipher); + result.ciphers.push(cipher); + }); + + result.success = true; + return result; + } +} diff --git a/src/services/import.service.ts b/src/services/import.service.ts index bb8baae8d..47ad31a9b 100644 --- a/src/services/import.service.ts +++ b/src/services/import.service.ts @@ -61,6 +61,7 @@ import { RememBearCsvImporter } from '../importers/rememBearCsvImporter'; import { RoboFormCsvImporter } from '../importers/roboformCsvImporter'; import { SafeInCloudXmlImporter } from '../importers/safeInCloudXmlImporter'; import { SaferPassCsvImporter } from '../importers/saferpassCsvImport'; +import { SecureSafeCsvImporter } from '../importers/secureSafeCsvImporter'; import { SplashIdCsvImporter } from '../importers/splashIdCsvImporter'; import { StickyPasswordXmlImporter } from '../importers/stickyPasswordXmlImporter'; import { TrueKeyCsvImporter } from '../importers/truekeyCsvImporter'; @@ -117,6 +118,7 @@ export class ImportService implements ImportServiceAbstraction { { id: 'remembearcsv', name: 'RememBear (csv)' }, { id: 'passwordwallettxt', name: 'PasswordWallet (txt)' }, { id: 'mykicsv', name: 'Myki (csv)' }, + { id: 'securesafecsv', name: 'SecureSafe (csv)' }, ]; constructor(private cipherService: CipherService, private folderService: FolderService, @@ -251,6 +253,8 @@ export class ImportService implements ImportServiceAbstraction { return new PasswordWalletTxtImporter(); case 'mykicsv': return new MykiCsvImporter(); + case 'securesafecsv': + return new SecureSafeCsvImporter(); default: return null; }