mirror of
https://github.com/nextcloud/passman.git
synced 2025-03-01 18:05:28 +08:00
Save work
This commit is contained in:
parent
bc1650556e
commit
8920a36ea7
11 changed files with 136 additions and 32 deletions
|
@ -37,7 +37,7 @@
|
|||
<notnull>true</notnull>
|
||||
</field>
|
||||
<field>
|
||||
<name>settings</name>
|
||||
<name>vault_settings</name>
|
||||
<type>clob</type>
|
||||
<notnull>false</notnull>
|
||||
</field>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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);
|
||||
|
||||
};
|
||||
|
||||
}]);
|
||||
|
|
|
@ -34,6 +34,7 @@ angular.module('passmanApp')
|
|||
} catch(e) {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
}]);
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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>
|
Loading…
Reference in a new issue