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

122 lines
4.2 KiB
JavaScript
Raw Normal View History

angular
.module('bit.vault')
2017-04-11 23:29:45 +02:00
.controller('vaultShareController', function ($scope, apiService, $uibModalInstance, authService, cipherService,
loginId, $analytics, $state) {
$analytics.eventTrack('vaultShareController', { category: 'Modal' });
$scope.model = {};
$scope.login = {};
$scope.subvaults = [];
2017-04-05 04:08:04 +02:00
$scope.selectedSubvaults = {};
$scope.organizations = [];
2017-04-05 04:08:04 +02:00
$scope.loadingSubvaults = true;
2017-03-25 16:41:06 +01:00
$scope.readOnly = false;
2017-03-25 16:41:06 +01:00
apiService.logins.get({ id: loginId }).$promise.then(function (login) {
$scope.readOnly = !login.Edit;
if (login.Edit) {
$scope.login = cipherService.decryptLogin(login);
}
2017-03-25 16:41:06 +01:00
return login.Edit;
}).then(function (canEdit) {
if (!canEdit) {
return;
}
return authService.getUserProfile();
}).then(function (profile) {
if (profile && profile.organizations) {
2017-03-28 03:55:39 +02:00
var orgs = [],
setFirstOrg = false;
for (var i in profile.organizations) {
2017-04-11 23:29:45 +02:00
if (profile.organizations.hasOwnProperty(i) && profile.organizations[i].enabled) {
2017-03-28 03:55:39 +02:00
orgs.push({
id: profile.organizations[i].id,
name: profile.organizations[i].name
});
if (!setFirstOrg) {
setFirstOrg = true;
$scope.model.organizationId = profile.organizations[i].id;
}
}
}
$scope.organizations = orgs;
apiService.subvaults.listMe(function (response) {
var subvaults = [];
for (var i = 0; i < response.Data.length; i++) {
var decSubvault = cipherService.decryptSubvault(response.Data[i]);
decSubvault.organizationId = response.Data[i].OrganizationId;
subvaults.push(decSubvault);
}
$scope.subvaults = subvaults;
2017-04-05 04:08:04 +02:00
$scope.loadingSubvaults = false;
});
}
});
2017-04-05 04:08:04 +02:00
$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;
};
$scope.submitPromise = null;
$scope.submit = function (model) {
$scope.login.organizationId = model.organizationId;
var request = {
2017-04-05 04:08:04 +02:00
subvaultIds: [],
cipher: cipherService.encryptLogin($scope.login)
};
2017-04-05 04:08:04 +02:00
for (var id in $scope.selectedSubvaults) {
if ($scope.selectedSubvaults.hasOwnProperty(id)) {
request.subvaultIds.push(id);
}
}
2017-04-12 18:41:43 +02:00
$scope.submitPromise = apiService.ciphers.putShare({ id: loginId }, request, function (response) {
$analytics.eventTrack('Shared Login');
2017-04-15 05:36:11 +02:00
$uibModalInstance.close(model.organizationId);
}).$promise;
};
$scope.close = function () {
$uibModalInstance.dismiss('cancel');
};
2017-04-11 23:29:45 +02:00
$scope.createOrg = function () {
$state.go('backend.user.settingsCreateOrg').then(function () {
$uibModalInstance.dismiss('cancel');
});
};
});