diff --git a/src/Vault/wwwroot/_references.js b/src/Vault/wwwroot/_references.js
index 725d3ce1dc..b8efe7cb73 100644
--- a/src/Vault/wwwroot/_references.js
+++ b/src/Vault/wwwroot/_references.js
@@ -32,8 +32,9 @@
///
///
///
+///
///
-///
+///
///
///
///
@@ -46,3 +47,24 @@
///
///
///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
+///
diff --git a/src/Vault/wwwroot/app/global/mainController.js b/src/Vault/wwwroot/app/global/mainController.js
index a9aa96ffdb..9259a466e1 100644
--- a/src/Vault/wwwroot/app/global/mainController.js
+++ b/src/Vault/wwwroot/app/global/mainController.js
@@ -60,6 +60,10 @@ angular
$scope.$broadcast('settingsSessions');
};
+ $scope.delete = function () {
+ $scope.$broadcast('settingsDelete');
+ };
+
$scope.twoFactor = function () {
$scope.$broadcast('settingsTwoFactor');
};
diff --git a/src/Vault/wwwroot/app/services/apiService.js b/src/Vault/wwwroot/app/services/apiService.js
index fb76234f7f..a0719f4c14 100644
--- a/src/Vault/wwwroot/app/services/apiService.js
+++ b/src/Vault/wwwroot/app/services/apiService.js
@@ -33,7 +33,8 @@
putTwoFactor: { url: _apiUri + '/accounts/two-factor', method: 'PUT', params: {} },
postPasswordHint: { url: _apiUri + '/accounts/password-hint', method: 'POST', params: {} },
putSecurityStamp: { url: _apiUri + '/accounts/security-stamp', method: 'PUT', params: {} },
- 'import': { url: _apiUri + '/accounts/import', method: 'POST', params: {} }
+ 'import': { url: _apiUri + '/accounts/import', method: 'POST', params: {} },
+ postDelete: { url: _apiUri + '/accounts/delete', method: 'POST', params: {} }
});
_service.auth = $resource(_apiUri + '/auth', {}, {
diff --git a/src/Vault/wwwroot/app/settings/settingsController.js b/src/Vault/wwwroot/app/settings/settingsController.js
index 4025ca18e7..2556b001f7 100644
--- a/src/Vault/wwwroot/app/settings/settingsController.js
+++ b/src/Vault/wwwroot/app/settings/settingsController.js
@@ -69,4 +69,17 @@
$scope.$on('settingsSessions', function (event, args) {
$scope.sessions();
});
+
+ $scope.delete = function () {
+ $uibModal.open({
+ animation: true,
+ templateUrl: 'app/settings/views/settingsDelete.html',
+ controller: 'settingsDeleteController',
+ size: 'sm'
+ });
+ };
+
+ $scope.$on('settingsDelete', function (event, args) {
+ $scope.delete();
+ });
});
diff --git a/src/Vault/wwwroot/app/settings/settingsDeleteController.js b/src/Vault/wwwroot/app/settings/settingsDeleteController.js
new file mode 100644
index 0000000000..cc10a7d722
--- /dev/null
+++ b/src/Vault/wwwroot/app/settings/settingsDeleteController.js
@@ -0,0 +1,22 @@
+angular
+ .module('bit.settings')
+
+ .controller('settingsDeleteController', function ($scope, $state, apiService, $uibModalInstance, cryptoService, authService, toastr) {
+ $scope.submit = function (model) {
+ var request = {
+ masterPasswordHash: cryptoService.hashPassword(model.masterPassword)
+ };
+
+ $scope.submitPromise = apiService.accounts.postDelete(request, function () {
+ $uibModalInstance.dismiss('cancel');
+ authService.logOut();
+ $state.go('frontend.login.info').then(function () {
+ toastr.success('Your account has been closed and all associated data has been deleted.', 'Account Deleted');
+ });
+ }).$promise;
+ };
+
+ $scope.close = function () {
+ $uibModalInstance.dismiss('cancel');
+ };
+ });
diff --git a/src/Vault/wwwroot/app/settings/views/settingsDelete.html b/src/Vault/wwwroot/app/settings/views/settingsDelete.html
new file mode 100644
index 0000000000..7b3212623d
--- /dev/null
+++ b/src/Vault/wwwroot/app/settings/views/settingsDelete.html
@@ -0,0 +1,30 @@
+
+
diff --git a/src/Vault/wwwroot/app/tools/toolsImportController.js b/src/Vault/wwwroot/app/tools/toolsImportController.js
index aa1b5300df..8a616cb99b 100644
--- a/src/Vault/wwwroot/app/tools/toolsImportController.js
+++ b/src/Vault/wwwroot/app/tools/toolsImportController.js
@@ -77,7 +77,7 @@
};
function doImport(folders, sites, siteRelationships) {
- $scope.importPromise = apiService.tools.import({
+ $scope.importPromise = apiService.accounts.import({
folders: cipherService.encryptFolders(folders, cryptoService.getKey()),
sites: cipherService.encryptSites(sites, cryptoService.getKey()),
siteRelationships: siteRelationships
diff --git a/src/Vault/wwwroot/app/views/backendLayout.html b/src/Vault/wwwroot/app/views/backendLayout.html
index 94aa0f230c..4588e0048d 100644
--- a/src/Vault/wwwroot/app/views/backendLayout.html
+++ b/src/Vault/wwwroot/app/views/backendLayout.html
@@ -52,6 +52,7 @@
Change Email
Deauthorize Sessions
Two-step Login
+ Delete Account
diff --git a/src/Vault/wwwroot/index.html b/src/Vault/wwwroot/index.html
index 136426feff..6ddd3ba083 100644
--- a/src/Vault/wwwroot/index.html
+++ b/src/Vault/wwwroot/index.html
@@ -113,6 +113,7 @@
+