From 0c32e890b3217df7ea1d62686f598044e9d03b83 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Sun, 27 Dec 2015 00:15:35 -0500 Subject: [PATCH] Added settings account delete --- src/Vault/wwwroot/_references.js | 24 ++++++++++++++- .../wwwroot/app/global/mainController.js | 4 +++ src/Vault/wwwroot/app/services/apiService.js | 3 +- .../app/settings/settingsController.js | 13 ++++++++ .../app/settings/settingsDeleteController.js | 22 ++++++++++++++ .../app/settings/views/settingsDelete.html | 30 +++++++++++++++++++ .../app/tools/toolsImportController.js | 2 +- .../wwwroot/app/views/backendLayout.html | 1 + src/Vault/wwwroot/index.html | 1 + 9 files changed, 97 insertions(+), 3 deletions(-) create mode 100644 src/Vault/wwwroot/app/settings/settingsDeleteController.js create mode 100644 src/Vault/wwwroot/app/settings/views/settingsDelete.html 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 @@ +