1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-11-05 09:10:53 +01:00

catch bad data on all importers

This commit is contained in:
Kyle Spearrin 2016-12-27 10:36:02 -05:00
parent a9f2ef7c10
commit 7c2d5448e8
2 changed files with 15 additions and 14 deletions

View File

@ -190,8 +190,7 @@
function parseData(data) {
var folders = [],
sites = [],
siteRelationships = [],
badDataSites = 0;
siteRelationships = [];
angular.forEach(data, function (value, key) {
var folderIndex = folders.length,
@ -209,10 +208,6 @@
}
}
if ((!value.name || value.name === '') && (!value.password || value.password === '')) {
badDataSites++;
}
sites.push({
favorite: value.fav === '1',
uri: value.url && value.url !== '' ? trimUri(value.url) : null,
@ -237,12 +232,7 @@
}
});
if (badDataSites && badDataSites > (data.length / 2)) {
error('CSV data is not formatted correctly from LastPass. Please check your import file and try again.');
}
else {
success(folders, sites, siteRelationships);
}
success(folders, sites, siteRelationships);
}
}

View File

@ -13,10 +13,17 @@
function importSuccess(folders, sites, folderRelationships) {
if (!folders.length && !sites.length) {
$uibModalInstance.dismiss('cancel');
toastr.error('Nothing was imported.');
importError('Nothing was imported.');
return;
}
else if (sites.length) {
var halfway = Math.floor(sites.length / 2);
var last = sites.length - 1;
if (siteIsBadData(sites[0]) && siteIsBadData(sites[halfway]) && siteIsBadData(sites[last])) {
importError('CSV data is not formatted correctly. Please check your import file and try again.');
return;
}
}
apiService.ciphers.import({
folders: cipherService.encryptFolders(folders, cryptoService.getKey()),
@ -31,6 +38,10 @@
}, importError);
}
function siteIsBadData(site) {
return (site.name === null || site.name === '--') && (site.password === null || site.password === '');
}
function importError(error) {
$analytics.eventTrack('Import Data Failed', { label: $scope.model.source });
$uibModalInstance.dismiss('cancel');