Save work

This commit is contained in:
brantje 2016-09-28 22:05:09 +02:00
parent bc1650556e
commit 8920a36ea7
No known key found for this signature in database
GPG key ID: 5FF1D117F918687F
11 changed files with 136 additions and 32 deletions

View file

@ -37,7 +37,7 @@
<notnull>true</notnull>
</field>
<field>
<name>settings</name>
<name>vault_settings</name>
<type>clob</type>
<notnull>false</notnull>
</field>

View file

@ -5,7 +5,7 @@
<description>A password manager for Nextcloud</description>
<licence>AGPL</licence>
<author>Sander Brand</author>
<version>1.0.2.10</version>
<version>1.0.2.11</version>
<namespace>Passman</namespace>
<category>other</category>
<website>https://github.com/nextcloud/passman/</website>

View file

@ -67,7 +67,7 @@ class VaultController extends ApiController {
'private_sharing_key' => $vault->getPrivateSharingKey(),
'public_sharing_key' => $vault->getPublicSharingKey(),
'sharing_keys_generated' => $vault->getSharingKeysGenerated(),
'settings' => $vault->getSettings(),
'vault_settings' => $vault->getVaultSettings(),
'last_access' => $vault->getlastAccess()
);
$result['credentials'] = $credentials;
@ -81,9 +81,15 @@ class VaultController extends ApiController {
/**
* @NoAdminRequired
*/
public function update($vault_id) {
$this->vaultService->getById($vault_id, $this->userId);
public function update($vault_id, $name, $vault_settings) {
$vault = array_pop($this->vaultService->getById($vault_id, $this->userId));
if($name) {
$vault->setName($name);
}
if($vault_settings) {
$vault->setVaultSettings($vault_settings);
}
$this->vaultService->updateVault($vault);
}
/**

View file

@ -8,9 +8,51 @@
* Controller of the passmanApp
*/
angular.module('passmanApp')
.controller('SettingsCtrl', ['$scope', '$rootScope', 'SettingsService', 'VaultService', 'CredentialService', '$location', '$routeParams', '$http',
function ($scope, $rootScope, SettingsService, VaultService, CredentialService, $location, $routeParams, $http) {
$scope.active_vault = VaultService.getActiveVault();
.controller('SettingsCtrl', ['$scope', '$rootScope', 'SettingsService', 'VaultService', 'CredentialService', '$location', '$routeParams', '$http', 'EncryptService',
function ($scope, $rootScope, SettingsService, VaultService, CredentialService, $location, $routeParams, $http, EncryptService) {
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;
}
}
var _settings = {
pwSettings: {
'length': 12,
'useUppercase': true,
'useLowercase': true,
'useDigits': true,
'useSpecialChars': true,
'minimumDigitCount': 3,
'avoidAmbiguousCharacters': false,
'requireEveryCharType': 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 () {
console.log('done');
});
};
$scope.tabs = [
{
title: 'General settings',
@ -20,6 +62,11 @@ angular.module('passmanApp')
title: 'Password Audit',
url: 'views/partials/forms/settings/tool.html'
},
{
title: 'Password settings',
url: 'views/partials/forms/settings/password_settings.html'
},
{
title: 'Import credentials',
@ -33,7 +80,7 @@ angular.module('passmanApp')
},
{
title: 'Sharing',
url:'views/partials/forms/settings/sharing.html'
url: 'views/partials/forms/settings/sharing.html'
}
];
@ -58,7 +105,7 @@ angular.module('passmanApp')
$scope.$watch(function () {
return VaultService.getActiveVault()
}, function (vault) {
if(vault) {
if (vault) {
$scope.active_vault = vault;
}
});
@ -108,7 +155,6 @@ angular.module('passmanApp')
$scope.cancel = function () {
$location.path('/vault/' + $routeParams.vault_id);
};
}]);

View file

@ -34,6 +34,7 @@ angular.module('passmanApp')
} catch(e) {
throw e;
}
}
},
}
}]);

View file

@ -42,6 +42,9 @@ angular.module('passmanApp')
var queryUrl = OC.generateUrl('apps/passman/api/v2/vaults/' + vault.vault_id);
return $http.get(queryUrl).then(function (response) {
if(response.data){
if(response.data.vault_settings){
response.data.vault_settings = JSON.parse(window.atob(response.data.vault_settings))
}
return response.data;
} else {
return response;
@ -53,8 +56,8 @@ angular.module('passmanApp')
delete vault.defaultVaultPass;
delete vault.defaultVault;
var queryUrl = OC.generateUrl('apps/passman/api/v2/vaults/' + vault.vault_id);
return $http.patch(queryUrl).then(function (response) {
var queryUrl = OC.generateUrl('apps/passman/api/v2/vaults/' + _vault.vault_id);
return $http.patch(queryUrl, _vault).then(function (response) {
if(response.data){
return response.data;
} else {

View file

@ -63,7 +63,7 @@ angular.module('views/partials/forms/settings/import.html', []).run(['$templateC
angular.module('views/partials/forms/settings/password_settings.html', []).run(['$templateCache', function($templateCache) {
'use strict';
$templateCache.put('views/partials/forms/settings/password_settings.html',
'<div class="password_settings"><div class="col-xs-12 col-sm-5 col-lg-4"><label><span class="label">Password length</span><br><input type="number" ng-model="pwSettings.length" min="1"></label><label><span class="label">Minimum amount of digits</span><br><input type="number" ng-model="pwSettings.minimumDigitCount" min="0"></label></div><div class="col-xs-12 col-sm-6 col-lg-6"><label><input type="checkbox" ng-model="pwSettings.useUppercase"> <span class="label sm">Use uppercase letters</span></label><label><input ng-model="pwSettings.useLowercase" type="checkbox" id="lower"> <span class="label sm">Use lowercase letters</span></label><label><input ng-model="pwSettings.useDigits" type="checkbox" id="digits"> <span class="label sm">Use numbers</span></label><label><input type="checkbox" id="special" ng-model="pwSettings.useSpecialChars"> <span class="label sm">Use special characters</span></label><label><input type="checkbox" id="ambig" ng-model="pwSettings.avoidAmbiguousCharacters"> <span class="label sm">Avoid ambiguous characters</span></label><label><input type="checkbox" ng-model="pwSettings.requireEveryCharType" id="reqevery"> <span class="label sm">Require every character type</span></label></div></div>');
'<div class="password_settings"><div class="col-xs-12 col-sm-5 col-lg-4"><label><span class="label">Password length</span><br><input type="number" ng-model="vault_settings.pwSettings.length" min="1"></label><label><span class="label">Minimum amount of digits</span><br><input type="number" ng-model="vault_settings.pwSettings.minimumDigitCount" min="0"></label></div><div class="col-xs-12 col-sm-6 col-lg-6"><label><input type="checkbox" ng-model="vault_settings.pwSettings.useUppercase"> <span class="label sm">Use uppercase letters</span></label><label><input ng-model="vault_settings.pwSettings.useLowercase" type="checkbox" id="lower"> <span class="label sm">Use lowercase letters</span></label><label><input ng-model="vault_settings.pwSettings.useDigits" type="checkbox" id="digits"> <span class="label sm">Use numbers</span></label><label><input type="checkbox" id="special" ng-model="vault_settings.pwSettings.useSpecialChars"> <span class="label sm">Use special characters</span></label><label><input type="checkbox" id="ambig" ng-model="vault_settings.pwSettings.avoidAmbiguousCharacters"> <span class="label sm">Avoid ambiguous characters</span></label><label><input type="checkbox" ng-model="vault_settings.pwSettings.requireEveryCharType" id="reqevery"> <span class="label sm">Require every character type</span></label></div></div><div class="row"><div class="col-xs-12"><button class="button" ng-click="saveVaultSettings()">Save</button></div></div>');
}]);
angular.module('views/partials/forms/settings/sharing.html', []).run(['$templateCache', function($templateCache) {

View file

@ -31,8 +31,8 @@ use \OCP\AppFramework\Db\Entity;
* @method string getPrivateSharingKey()
* @method void setSharingKeysGenerated(integer $value)
* @method integer getSharingKeysGenerated()
* @method void setSettings(integer $value)
* @method integer getSettings()
* @method void setVaultSettings(integer $value)
* @method integer getVaultSettings()
*/
@ -48,7 +48,7 @@ class Vault extends Entity implements \JsonSerializable{
protected $publicSharingKey;
protected $privateSharingKey;
protected $sharingKeysGenerated;
protected $settings;
protected $vaultSettings;
public function __construct() {
// add types in constructor

View file

@ -58,6 +58,10 @@ class VaultMapper extends Mapper {
$this->update($vault);
}
public function updateVault(Vault $vault){
$this->update($vault);
}
public function updateSharingKeys($vault_id, $privateKey, $publicKey){
$vault = new Vault();
$vault->setId($vault_id);

View file

@ -31,25 +31,17 @@ class VaultService {
public function getById($vault_id, $user_id) {
$vault = $this->vaultMapper->find($vault_id, $user_id);
$vault = $vault[0];
$return = array(
'vault_id' => $vault->getId(),
'guid' => $vault->getGuid(),
'name' => $vault->getName(),
'created' => $vault->getCreated(),
'private_sharing_key' => $vault->getPrivateSharingKey(),
'public_sharing_key' => $vault->getPublicSharingKey(),
'sharing_keys_generated' => $vault->getSharingKeysGenerated(),
'settings' => $vault->getSettings(),
'last_access' => $vault->getlastAccess()
);
return $return;
return $vault;
}
public function createVault($vault_name, $userId) {
return $this->vaultMapper->create($vault_name, $userId);
}
public function updateVault($vault) {
return $this->vaultMapper->updateVault($vault);
}
public function setLastAccess($vault_id, $user_id){
return $this->vaultMapper->setLastAccess($vault_id, $user_id);
}

View file

@ -0,0 +1,52 @@
<div class="password_settings">
<div class="col-xs-12 col-sm-5 col-lg-4">
<label>
<span class="label">Password length</span><br />
<input type="number" ng-model="vault_settings.pwSettings.length" min="1">
</label>
<label>
<span class="label">Minimum amount of digits</span><br />
<input type="number" ng-model="vault_settings.pwSettings.minimumDigitCount" min="0">
</label>
</div>
<div class="col-xs-12 col-sm-6 col-lg-6">
<label>
<input type="checkbox"
ng-model="vault_settings.pwSettings.useUppercase">
<span class="label sm">Use uppercase letters</span>
</label>
<label>
<input
ng-model="vault_settings.pwSettings.useLowercase" type="checkbox"
id="lower">
<span class="label sm">Use lowercase letters</span>
</label>
<label>
<input ng-model="vault_settings.pwSettings.useDigits" type="checkbox"
id="digits">
<span class="label sm">Use numbers</span>
</label>
<label>
<input type="checkbox" id="special"
ng-model="vault_settings.pwSettings.useSpecialChars">
<span class="label sm">Use special characters</span>
</label>
<label>
<input type="checkbox" id="ambig"
ng-model="vault_settings.pwSettings.avoidAmbiguousCharacters">
<span class="label sm">Avoid ambiguous characters</span>
</label>
<label>
<input type="checkbox" ng-model="vault_settings.pwSettings.requireEveryCharType"
id="reqevery">
<span class="label sm">Require every character type</span>
</label>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<button class="button" ng-click="saveVaultSettings()">Save</button>
</div>
</div>