Merge branch 'fix/815'

This commit is contained in:
Marcos Zuriaga 2024-10-14 23:20:36 +02:00
commit 077724e59f
No known key found for this signature in database
GPG key ID: 7D15585354D072FF
4 changed files with 25 additions and 7 deletions

View file

@ -32,8 +32,8 @@
* Controller of the passmanApp * Controller of the passmanApp
*/ */
angular.module('passmanApp') angular.module('passmanApp')
.controller('CredentialEditCtrl', ['$scope', 'VaultService', 'CredentialService', 'SettingsService', '$location', '$routeParams', 'FileService', 'EncryptService', 'TagService', 'NotificationService', 'ShareService', '$translate','$rootScope', .controller('CredentialEditCtrl', ['$scope', 'VaultService', 'CredentialService', 'SettingsService', '$location', '$routeParams', 'FileService', 'EncryptService', 'TagService', 'NotificationService', 'ShareService', 'SharingACL', '$translate','$rootScope',
function ($scope, VaultService, CredentialService, SettingsService, $location, $routeParams, FileService, EncryptService, TagService, NotificationService, ShareService, $translate, $rootScope) { function ($scope, VaultService, CredentialService, SettingsService, $location, $routeParams, FileService, EncryptService, TagService, NotificationService, ShareService, SharingACL, $translate, $rootScope) {
$scope.active_vault = VaultService.getActiveVault(); $scope.active_vault = VaultService.getActiveVault();
if (!SettingsService.getSetting('defaultVault') || !SettingsService.getSetting('defaultVaultPass')) { if (!SettingsService.getSetting('defaultVault') || !SettingsService.getSetting('defaultVaultPass')) {
if (!$scope.active_vault) { if (!$scope.active_vault) {
@ -89,7 +89,8 @@
}, { }, {
title: translations.files, title: translations.files,
url: 'views/partials/forms/edit_credential/files.html', url: 'views/partials/forms/edit_credential/files.html',
color: 'yellow' color: 'yellow',
requiredACL: $scope.permissions.permissions.FILES
}, { }, {
title: translations.otp, title: translations.otp,
url: 'views/partials/forms/edit_credential/otp.html', url: 'views/partials/forms/edit_credential/otp.html',
@ -135,6 +136,17 @@
return tab.url === $scope.currentTab.url; return tab.url === $scope.currentTab.url;
}; };
$scope.permissions = new SharingACL(0);
$scope.hasPermission = function (acl, permission) {
if (acl) {
var tmp = new SharingACL(acl.permission);
return tmp.hasPermission(permission);
} else {
return true;
}
};
/** /**
* Below general edit functions * Below general edit functions
*/ */

View file

@ -123,15 +123,20 @@
encryptCredential: function (credential, key) { encryptCredential: function (credential, key) {
for (var i = 0; i < _encryptedFields.length; i++) { for (var i = 0; i < _encryptedFields.length; i++) {
var field = _encryptedFields[i]; var field = _encryptedFields[i];
var fieldValue = angular.copy(credential[field]); if (credential[field] !== undefined) {
credential[field] = EncryptService.encryptString(JSON.stringify(fieldValue), key); var fieldValue = angular.copy(credential[field]);
credential[field] = EncryptService.encryptString(JSON.stringify(fieldValue), key);
}
} }
return credential; return credential;
}, },
decryptCredential: function (credential, key) { decryptCredential: function (credential, key) {
for (var i = 0; i < _encryptedFields.length; i++) { for (var i = 0; i < _encryptedFields.length; i++) {
var field = _encryptedFields[i]; var field = _encryptedFields[i];
var fieldValue = angular.copy(credential[field]); var fieldValue = null;
if (credential[field] !== undefined) {
fieldValue = angular.copy(credential[field]);
}
var field_decrypted_value; var field_decrypted_value;
try { try {
if(fieldValue!==null && fieldValue!=="null" && fieldValue!==""){ if(fieldValue!==null && fieldValue!=="null" && fieldValue!==""){

View file

@ -9,7 +9,7 @@ angular.module('views/credential_revisions.html', []).run(['$templateCache', fun
angular.module('views/edit_credential.html', []).run(['$templateCache', function($templateCache) { angular.module('views/edit_credential.html', []).run(['$templateCache', function($templateCache) {
'use strict'; 'use strict';
$templateCache.put('views/edit_credential.html', $templateCache.put('views/edit_credential.html',
'<div id="passman-controls"><div class="breadcrumb"><ul class="breadcrumb"><li class="crumb svg crumbhome"><a ng-click="logout()" class="icon-home">Home</a> <span style="display: none;"></span></li><li class="crumb svg" data-dir="/Test"><a ng-click="cancel()">{{ active_vault.name }}</a></li><li class="crumb svg last" data-dir="/Test"><a ng-if="storedCredential.credential_id">{{ \'edit.credential\' | translate }} "{{ storedCredential.label }}"</a> <a ng-if="!storedCredential.credential_id">{{ \'create.credential\' | translate }}</a></li></ul></div></div><div class="app-sidebar-tabs"><nav class="app-sidebar-tabs__nav"><ul><li ng-repeat="tab in tabs track by $index" class="app-sidebar-tabs__tab" ng-class="isActiveTab(tab)? \'active\' : \'inactive\'" ng-click="onClickTab(tab)">{{ tab.title }}</li></ul></nav><div class="tab_container edit_credential" use-theme type="\'border-top-color\'"><div ng-include="currentTab.url"></div><button ng-click="saveCredential()" ng-disabled="saving"><i class="fa fa-spinner fa-spin" ng-show="saving"></i> {{ \'save\' | translate }}</button> <button ng-click="cancel()">{{ \'cancel\' | translate }}</button></div></div>'); '<div id="passman-controls"><div class="breadcrumb"><ul class="breadcrumb"><li class="crumb svg crumbhome"><a ng-click="logout()" class="icon-home">Home</a> <span style="display: none;"></span></li><li class="crumb svg" data-dir="/Test"><a ng-click="cancel()">{{ active_vault.name }}</a></li><li class="crumb svg last" data-dir="/Test"><a ng-if="storedCredential.credential_id">{{ \'edit.credential\' | translate }} "{{ storedCredential.label }}"</a> <a ng-if="!storedCredential.credential_id">{{ \'create.credential\' | translate }}</a></li></ul></div></div><div class="app-sidebar-tabs"><nav class="app-sidebar-tabs__nav"><ul><li ng-repeat="tab in tabs track by $index" class="app-sidebar-tabs__tab" ng-if="tab.requiredACL == undefined || storedCredential.acl == undefined || hasPermission(storedCredential.acl.permissions, tab.requiredACL)" ng-class="isActiveTab(tab)? \'active\' : \'inactive\'" ng-click="onClickTab(tab)">{{ tab.title }}</li></ul></nav><div class="tab_container edit_credential" use-theme type="\'border-top-color\'"><div ng-include="currentTab.url"></div><button ng-click="saveCredential()" ng-disabled="saving"><i class="fa fa-spinner fa-spin" ng-show="saving"></i> {{ \'save\' | translate }}</button> <button ng-click="cancel()">{{ \'cancel\' | translate }}</button></div></div>');
}]); }]);
angular.module('views/partials/credential_template.html', []).run(['$templateCache', function($templateCache) { angular.module('views/partials/credential_template.html', []).run(['$templateCache', function($templateCache) {

View file

@ -21,6 +21,7 @@
<nav class="app-sidebar-tabs__nav"> <nav class="app-sidebar-tabs__nav">
<ul> <ul>
<li ng-repeat="tab in tabs track by $index" class="app-sidebar-tabs__tab" <li ng-repeat="tab in tabs track by $index" class="app-sidebar-tabs__tab"
ng-if="tab.requiredACL == undefined || storedCredential.acl == undefined || hasPermission(storedCredential.acl.permissions, tab.requiredACL)"
ng-class="isActiveTab(tab)? 'active' : 'inactive'" ng-class="isActiveTab(tab)? 'active' : 'inactive'"
ng-click="onClickTab(tab)">{{ tab.title }} ng-click="onClickTab(tab)">{{ tab.title }}
</li> </li>