1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-10-10 06:08:34 +02:00
bitwarden-browser/src/app/vault/vaultLoginSubvaultsController.js

103 lines
3.5 KiB
JavaScript
Raw Normal View History

2017-04-04 23:21:47 +02:00
angular
.module('bit.vault')
.controller('vaultLoginSubvaultsController', function ($scope, apiService, $uibModalInstance, cipherService,
loginId, $analytics) {
$analytics.eventTrack('vaultLoginSubvaultsController', { category: 'Modal' });
$scope.login = {};
$scope.readOnly = false;
$scope.loadingLogin = true;
$scope.loadingSubvaults = true;
$scope.selectedSubvaults = {};
2017-04-05 17:37:22 +02:00
$scope.subvaults = [];
2017-04-04 23:21:47 +02:00
$uibModalInstance.opened.then(function () {
apiService.ciphers.getFullDetails({ id: loginId }).$promise.then(function (cipher) {
$scope.loadingLogin = false;
$scope.readOnly = !cipher.Edit;
if (cipher.Edit && cipher.OrganizationId) {
if (cipher.Type === 1) {
$scope.login = cipherService.decryptLoginPreview(cipher);
}
var subvaults = {};
if (cipher.SubvaultIds) {
for (var i = 0; i < cipher.SubvaultIds.length; i++) {
subvaults[cipher.SubvaultIds[i]] = true;
}
}
$scope.selectedSubvaults = subvaults;
return cipher;
}
return;
}).then(function (cipher) {
if (!cipher.Edit) {
return;
}
apiService.subvaults.listMe(function (response) {
var subvaults = [];
for (var i = 0; i < response.Data.length; i++) {
if (response.Data[i].OrganizationId !== cipher.OrganizationId) {
continue;
}
var decSubvault = cipherService.decryptSubvault(response.Data[i]);
subvaults.push(decSubvault);
}
$scope.loadingSubvaults = false;
$scope.subvaults = subvaults;
});
});
});
$scope.toggleSubvaultSelectionAll = function ($event) {
var subvaults = {};
if ($event.target.checked) {
for (var i = 0; i < $scope.subvaults.length; i++) {
subvaults[$scope.subvaults[i].id] = true;
}
}
$scope.selectedSubvaults = subvaults;
};
$scope.toggleSubvaultSelection = function (id) {
if (id in $scope.selectedSubvaults) {
delete $scope.selectedSubvaults[id];
}
else {
$scope.selectedSubvaults[id] = true;
}
};
$scope.subvaultSelected = function (subvault) {
return subvault.id in $scope.selectedSubvaults;
};
$scope.allSelected = function () {
return Object.keys($scope.selectedSubvaults).length === $scope.subvaults.length;
};
2017-04-05 17:37:22 +02:00
$scope.submit = function (model) {
2017-04-04 23:21:47 +02:00
var request = {
subvaultIds: model.subvaultIds
};
2017-04-05 17:37:22 +02:00
$scope.submitPromise = apiService.ciphers.putSubvaults({ id: loginId }, request, function (response) {
2017-04-04 23:21:47 +02:00
$analytics.eventTrack('Edited Login Subvaults');
$uibModalInstance.close({
action: 'subvaultsEdit'
});
}).$promise;
};
$scope.close = function () {
$uibModalInstance.dismiss('cancel');
};
});