Skip to content

Commit

Permalink
Finish up vault settings
Browse files Browse the repository at this point in the history
  • Loading branch information
brantje committed Sep 28, 2016
1 parent 3394d78 commit fc99d93
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 79 deletions.
50 changes: 30 additions & 20 deletions js/app/controllers/edit_credential.js
Expand Up @@ -10,8 +10,33 @@
angular.module('passmanApp')
.controller('CredentialEditCtrl', ['$scope', 'VaultService', 'CredentialService', 'SettingsService', '$location', '$routeParams', 'FileService', 'EncryptService', 'TagService', 'NotificationService',
function ($scope, VaultService, CredentialService, SettingsService, $location, $routeParams, FileService, EncryptService, TagService, NotificationService) {
$scope.active_vault = VaultService.getActiveVault();

if (!SettingsService.getSetting('defaultVault') || !SettingsService.getSetting('defaultVaultPass')) {
if (!$scope.active_vault) {
$location.path('/')
}
} else {
if (SettingsService.getSetting('defaultVault') && SettingsService.getSetting('defaultVaultPass')) {
var _vault = angular.copy(SettingsService.getSetting('defaultVault'));
VaultService.getVault(_vault).then(function (vault) {
vault.vaultKey = SettingsService.getSetting('defaultVaultPass');
VaultService.setActiveVault(vault);
$scope.active_vault = vault;

$scope.pwSettings = VaultService.getVaultSetting('pwSettings',
{
'length': 12,
'useUppercase': true,
'useLowercase': true,
'useDigits': true,
'useSpecialChars': true,
'minimumDigitCount': 3,
'avoidAmbiguousCharacters': false,
'requireEveryCharType': true,
'generateOnCreate': true,
})
})
}
}

$scope.tabs = [{
title: 'General',
Expand All @@ -34,21 +59,6 @@ angular.module('passmanApp')
url: 'views/partials/forms/edit_credential/otp.html',
color: 'purple'
}];
if($scope.active_vault.vault_settings && $scope.active_vault.vault_settings.pwSettings){
$scope.pwSettings = angular.copy($scope.active_vault.vault_settings.pwSettings);
} else {
$scope.pwSettings = {
'length': 12,
'useUppercase': true,
'useLowercase': true,
'useDigits': true,
'useSpecialChars': true,
'minimumDigitCount': 3,
'avoidAmbiguousCharacters': false,
'requireEveryCharType': true,
'generateOnCreate': true,
};
}


if (!SettingsService.getSetting('defaultVault') || !SettingsService.getSetting('defaultVaultPass')) {
Expand All @@ -70,7 +80,7 @@ angular.module('passmanApp')
var storedCredential = SettingsService.getSetting('edit_credential');

if (!storedCredential) {
CredentialService.getCredential($routeParams.credential_id).then(function(result){
CredentialService.getCredential($routeParams.credential_id).then(function (result) {
$scope.storedCredential = CredentialService.decryptCredential(angular.copy(result));
});
} else {
Expand Down Expand Up @@ -176,10 +186,10 @@ angular.module('passmanApp')
$scope.renewIntervalValue = 0;
$scope.renewIntervalModifier = '0';

$scope.updateInterval = function(renewIntervalValue, renewIntervalModifier){
$scope.updateInterval = function (renewIntervalValue, renewIntervalModifier) {
var value = parseInt(renewIntervalValue);
var modifier = parseInt(renewIntervalModifier);
if( value && modifier) {
if (value && modifier) {
$scope.storedCredential.renew_interval = value * modifier;
}
};
Expand Down
83 changes: 34 additions & 49 deletions js/app/controllers/settings.js
Expand Up @@ -10,50 +10,45 @@
angular.module('passmanApp')
.controller('SettingsCtrl', ['$scope', '$rootScope', 'SettingsService', 'VaultService', 'CredentialService', '$location', '$routeParams', '$http', 'EncryptService',
function ($scope, $rootScope, SettingsService, VaultService, CredentialService, $location, $routeParams, $http, EncryptService) {

$scope.vault_settings = {};
if (!SettingsService.getSetting('defaultVault') || !SettingsService.getSetting('defaultVaultPass')) {
if (!$scope.active_vault) {
$location.path('/')
}
} else {
if (SettingsService.getSetting('defaultVault') && SettingsService.getSetting('defaultVaultPass')) {
var _vault = angular.copy(SettingsService.getSetting('defaultVault'));
VaultService.setActiveVault(_vault);
$scope.active_vault = _vault;

VaultService.getVault(_vault).then(function (vault) {
vault.vaultKey = SettingsService.getSetting('defaultVaultPass');
VaultService.setActiveVault(vault);
$scope.active_vault = vault;
$scope.$parent.selectedVault = true;
$scope.vault_settings.pwSettings = VaultService.getVaultSetting('pwSettings',
{
'length': 12,
'useUppercase': true,
'useLowercase': true,
'useDigits': true,
'useSpecialChars': true,
'minimumDigitCount': 3,
'avoidAmbiguousCharacters': false,
'requireEveryCharType': true,
'generateOnCreate': true,
})
})
}
}

var _settings = {
pwSettings: {
'length': 12,
'useUppercase': true,
'useLowercase': true,
'useDigits': true,
'useSpecialChars': true,
'minimumDigitCount': 3,
'avoidAmbiguousCharacters': false,
'requireEveryCharType': true,
'generateOnCreate': true,
}
};

$scope.vault_settings = angular.merge(_settings, $scope.active_vault.vault_settings);
console.log($scope.vault_settings);


$scope.saveVaultSettings = function () {
var _vault = $scope.active_vault;
_vault.vault_settings = angular.copy($scope.vault_settings);
_vault.vault_settings = window.btoa(JSON.stringify(_vault.vault_settings));
VaultService.updateVault(_vault).then(function () {
VaultService.setActiveVault(_vault);
});
};




$scope.tabs = [
{
title: 'General settings',
Expand Down Expand Up @@ -111,42 +106,32 @@ angular.module('passmanApp')
}
});

if (!SettingsService.getSetting('defaultVault') || !SettingsService.getSetting('defaultVaultPass')) {
if (!$scope.active_vault) {
$location.path('/')
}
} else {
if (SettingsService.getSetting('defaultVault') && SettingsService.getSetting('defaultVaultPass')) {
var _vault = angular.copy(SettingsService.getSetting('defaultVault'));
_vault.vaultKey = angular.copy(SettingsService.getSetting('defaultVaultPass'));
VaultService.setActiveVault(_vault);
$scope.active_vault = _vault;

}
}
if ($scope.active_vault) {
$scope.$parent.selectedVault = true;

}

$rootScope.$on('logout', function () {
$scope.selectedVault = false;
});

$scope.startScan = function (minStrength) {
VaultService.getVault($scope.active_vault).then(function (vault) {
var results = [];
for (var i = 0; i < vault.credentials.length; i++) {
var c = CredentialService.decryptCredential(angular.copy(credentials[i]));
if (c.password && c.password.length > 0 && c.hidden == 0) {
var zxcvbn_result = zxcvbn(c.password);
if (zxcvbn_result.score <= minStrength) {
results.push({
credential_id: c.credential_id,
label: c.label,
password: c.password,
password_zxcvbn_result: zxcvbn_result
});
var c = angular.copy(vault.credentials[i]);
if (c.password && c.hidden == 0) {
c = CredentialService.decryptCredential(c);
if(c.password){
var zxcvbn_result = zxcvbn(c.password);
if (zxcvbn_result.score <= minStrength) {
results.push({
credential_id: c.credential_id,
label: c.label,
password: c.password,
password_zxcvbn_result: zxcvbn_result
});
}
}

}
//@todo loop custom fields (if any and check secret fields
}
Expand Down
14 changes: 9 additions & 5 deletions js/app/directives/passwordgen.js
Expand Up @@ -133,14 +133,18 @@ angular.module('passmanApp')
};

scope.passwordNotNull = false;
scope.$watch("settings", function () {
if(scope.settings) {
if (!scope.password && scope.settings.generateOnCreate) {
scope.generatePasswordStart();
}
}
});


scope.$watch("password", function () {
scope.model = scope.password;
scope.password_repeat = scope.model;

if(!scope.password) {
console.log('Generating new pw');
scope.generatePasswordStart();
}
});
//
scope.onSuccess = function(e) {
Expand Down
24 changes: 19 additions & 5 deletions js/app/services/vaultservice.js
Expand Up @@ -10,8 +10,9 @@
angular.module('passmanApp')
.service('VaultService', ['$http', function ($http) {
// AngularJS will instantiate a singleton by calling "new" on this function
var _this = this;
var _activeVault;
return {
var service = {
getVaults: function(){
var queryUrl = OC.generateUrl('apps/passman/api/v2/vaults');
return $http.get(queryUrl).then(function (response) {
Expand All @@ -23,7 +24,7 @@ angular.module('passmanApp')
});
},
setActiveVault: function(vault){
_activeVault = vault;
_activeVault = angular.copy(vault);
},
getActiveVault: function(vault){
return _activeVault;
Expand All @@ -32,7 +33,16 @@ angular.module('passmanApp')
if(!_activeVault.vault_settings){
return default_value
} else {
return _activeVault.vault_settings[key] | default_value;
return (_activeVault.vault_settings[key] !== undefined) ? _activeVault.vault_settings[key] : default_value
}

},
setVaultSetting: function(key, value){
if(!_activeVault.vault_settings){
return false;
} else {
_activeVault.vault_settings[key] = value;
_this.updateVault(_activeVault);
}

},
Expand All @@ -52,6 +62,8 @@ angular.module('passmanApp')
if(response.data){
if(response.data.vault_settings){
response.data.vault_settings = JSON.parse(window.atob(response.data.vault_settings))
} else {
response.data.vault_settings = {};
}
return response.data;
} else {
Expand All @@ -63,7 +75,7 @@ angular.module('passmanApp')
var _vault = angular.copy(vault);
delete vault.defaultVaultPass;
delete vault.defaultVault;

_vault.vault_settings = window.btoa(JSON.stringify(_vault.vault_settings))
var queryUrl = OC.generateUrl('apps/passman/api/v2/vaults/' + _vault.vault_id);
return $http.patch(queryUrl, _vault).then(function (response) {
if(response.data){
Expand Down Expand Up @@ -93,5 +105,7 @@ angular.module('passmanApp')
}
});
}
}
};

return service;
}]);

0 comments on commit fc99d93

Please sign in to comment.