mirror of
https://github.com/nextcloud/passman.git
synced 2025-10-09 21:16:18 +08:00
Merge sharing into master, resolve merge conflict
This commit is contained in:
commit
c99e03d950
13 changed files with 213 additions and 17 deletions
|
@ -352,6 +352,9 @@
|
|||
#app-navigation > ul ul {
|
||||
display: inherit !important; }
|
||||
|
||||
.table {
|
||||
width: 100%; }
|
||||
|
||||
#app-settings-content:not(.ng-hide) {
|
||||
height: 60px;
|
||||
display: inherit !important;
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -41,6 +41,9 @@ angular
|
|||
.when('/vault/:vault_id/edit/:credential_id', {
|
||||
templateUrl: 'views/edit_credential.html',
|
||||
controller: 'CredentialEditCtrl'
|
||||
}).when('/vault/:vault_id/:credential_id/share', {
|
||||
templateUrl: 'views/share_credential.html',
|
||||
controller: 'ShareCtrl'
|
||||
})
|
||||
.otherwise({
|
||||
redirectTo: '/'
|
||||
|
|
|
@ -41,6 +41,13 @@ angular.module('passmanApp')
|
|||
$location.path('/vault/' + $scope.active_vault.vault_id + '/edit/' + _credential.credential_id)
|
||||
};
|
||||
|
||||
$scope.shareCredential = function (credential) {
|
||||
var _credential = angular.copy(credential);
|
||||
$rootScope.$emit('app_menu', false);
|
||||
SettingsService.setSetting('share_credential', CredentialService.encryptCredential(_credential));
|
||||
$location.path('/vault/' + $scope.active_vault.vault_id + '/' + _credential.credential_id +'/share')
|
||||
};
|
||||
|
||||
var notification;
|
||||
$scope.deleteCredential = function (credential) {
|
||||
var _credential = angular.copy(credential);
|
||||
|
|
93
js/app/controllers/share.js
Normal file
93
js/app/controllers/share.js
Normal file
|
@ -0,0 +1,93 @@
|
|||
'use strict';
|
||||
|
||||
/**
|
||||
* @ngdoc function
|
||||
* @name passmanApp.controller:MainCtrl
|
||||
* @description
|
||||
* # MainCtrl
|
||||
* Controller of the passmanApp
|
||||
*/
|
||||
angular.module('passmanApp')
|
||||
.controller('ShareCtrl', ['$scope', 'VaultService', 'CredentialService', 'SettingsService', '$location', '$routeParams', function ($scope, VaultService, CredentialService, SettingsService, $location, $routeParams) {
|
||||
$scope.active_vault = VaultService.getActiveVault();
|
||||
|
||||
$scope.tabs = [{
|
||||
title: 'Share with users and groups',
|
||||
url: 'views/partials/forms/share_credential/basics.html',
|
||||
}, {
|
||||
title: 'Share link',
|
||||
url: 'views/partials/forms/share_credential/expire_settings.html',
|
||||
color: 'green'
|
||||
}];
|
||||
$scope.currentTab = {
|
||||
title: 'General',
|
||||
url: 'views/partials/forms/share_credential/basics.html'
|
||||
};
|
||||
|
||||
$scope.onClickTab = function (tab) {
|
||||
$scope.currentTab = tab;
|
||||
};
|
||||
|
||||
$scope.isActiveTab = function (tab) {
|
||||
return tab.url == $scope.currentTab.url;
|
||||
};
|
||||
|
||||
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;
|
||||
|
||||
}
|
||||
}
|
||||
var storedCredential = SettingsService.getSetting('share_credential');
|
||||
if (!storedCredential) {
|
||||
$location.path('/vault/' + $routeParams.vault_id);
|
||||
} else {
|
||||
$scope.storedCredential = CredentialService.decryptCredential(angular.copy(storedCredential));
|
||||
}
|
||||
if ($scope.active_vault) {
|
||||
$scope.$parent.selectedVault = true;
|
||||
}
|
||||
$scope.cancel = function(){
|
||||
SettingsService.setSetting('share_credential', null);
|
||||
$location.path('/vault/' + $scope.storedCredential.vault_id);
|
||||
};
|
||||
|
||||
|
||||
$scope.searchUsersAndGroups = function($query){
|
||||
|
||||
};
|
||||
|
||||
$scope.share_settings = {
|
||||
credentialSharedWithUserAndGroup:[
|
||||
{
|
||||
userId: 'someuser',
|
||||
accessLevel: 'CAN_VIEW'
|
||||
},
|
||||
{
|
||||
userId: 'someuser',
|
||||
accessLevel: 'CAN_EDIT'
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
$scope.accessLevels = [
|
||||
{
|
||||
label: 'Can edit',
|
||||
value: 'CAN_EDIT'
|
||||
},
|
||||
{
|
||||
label: 'Can view',
|
||||
value: 'CAN_VIEW'
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
|
||||
}]);
|
|
@ -1,4 +1,4 @@
|
|||
angular.module('templates-main', ['views/edit_credential.html', 'views/partials/forms/edit_credential/basics.html', 'views/partials/forms/edit_credential/custom_fields.html', 'views/partials/forms/edit_credential/files.html', 'views/partials/forms/edit_credential/otp.html', 'views/partials/forms/edit_credential/password.html', 'views/partials/password-meter.html', 'views/show_vault.html', 'views/vaults.html']);
|
||||
angular.module('templates-main', ['views/edit_credential.html', 'views/partials/forms/edit_credential/basics.html', 'views/partials/forms/edit_credential/custom_fields.html', 'views/partials/forms/edit_credential/files.html', 'views/partials/forms/edit_credential/otp.html', 'views/partials/forms/edit_credential/password.html', 'views/partials/forms/share_credential/basics.html', 'views/partials/forms/share_credential/expire_settings.html', 'views/partials/password-meter.html', 'views/share_credential.html', 'views/show_vault.html', 'views/vaults.html']);
|
||||
|
||||
angular.module('views/edit_credential.html', []).run(['$templateCache', function($templateCache) {
|
||||
'use strict';
|
||||
|
@ -36,16 +36,34 @@ angular.module('views/partials/forms/edit_credential/password.html', []).run(['$
|
|||
'<div class="row"><div class="col-xs-12 col-md-5 col-lg-5"><label>Password</label><div><password-gen ng-model="storedCredential.password" settings="pwSettings" callback="pwGenerated"></password-gen><ng-password-meter password="storedCredential.password"></ng-password-meter></div><label>Repeat password</label><div><input type="password" ng-model="storedCredential.password_repeat"></div><label>Expire date</label><div></div><label>Renew interval</label><div></div></div><div class="col-xs-12 col-md-7 col-lg-7">Password generation settings<div class="row"><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></div></div>');
|
||||
}]);
|
||||
|
||||
angular.module('views/partials/forms/share_credential/basics.html', []).run(['$templateCache', function($templateCache) {
|
||||
'use strict';
|
||||
$templateCache.put('views/partials/forms/share_credential/basics.html',
|
||||
'<div class="row"><div class="col-xs-12 col-md-6"><div><table class="table"><thead><tr><td><input type="text" placeholder="Search user or groups"></td><td><select><option ng-repeat="lvl in accessLevels" value="{{lvl.value}}">{{lvl.label}}</option></select><button class="button">+</button></td></tr></thead></table></div></div></div><div class="row"><div class="col-xs-12 col-md-6"><table class="table shared_table"><thead><tr><td>User / group</td><td>Access</td></tr></thead><tr ng-repeat="user in share_settings.credentialSharedWithUserAndGroup"><td>{{user.userId}}</td><td>{{user.accessLevel}}</td></tr></table></div></div>');
|
||||
}]);
|
||||
|
||||
angular.module('views/partials/forms/share_credential/expire_settings.html', []).run(['$templateCache', function($templateCache) {
|
||||
'use strict';
|
||||
$templateCache.put('views/partials/forms/share_credential/expire_settings.html',
|
||||
'Expire settings');
|
||||
}]);
|
||||
|
||||
angular.module('views/partials/password-meter.html', []).run(['$templateCache', function($templateCache) {
|
||||
'use strict';
|
||||
$templateCache.put('views/partials/password-meter.html',
|
||||
'<div class="pass-meter {{masterClass}}" off-click="matchBreakdown = false;"><div class="{{colClass}} pass-meter-col {{first}}"><div class="indicator"></div></div><div class="{{colClass}} pass-meter-col {{second}}"><div class="indicator"></div></div><div class="{{colClass}} pass-meter-col {{third}}"><div class="indicator"></div></div><div class="{{colClass}} pass-meter-col {{fourth}}"><div class="indicator"></div></div><div class="details" ng-click="toggleScore()"><span ng-show="!scoreShown">Details</span> <span ng-show="scoreShown">Hide details</span></div><div class="pass-meter-message">{{message}}</div><div class="detail_box" ng-show="scoreShown"><div class="row"><div class="col-xs-6">Password score:</div><div class="col-xs-6">{{score.score}}</div></div><div><b>Cracking times</b></div><div class="row"><div class="col-xs-6">100 / hour<br><small>Throttled online attack</small></div><div class="col-xs-6">{{score.crack_times_display.online_throttling_100_per_hour}}</div></div><div class="row"><div class="col-xs-6">10 / second<br><small>Unthrottled online attack</small></div><div class="col-xs-6">{{score.crack_times_display.online_no_throttling_10_per_second}}</div></div><div class="row"><div class="col-xs-6">10k / second<br><small>Offline attack, slow hash, many cores</small></div><div class="col-xs-6">{{score.crack_times_display.offline_slow_hashing_1e4_per_second}}</div></div><div class="row"><div class="col-xs-6">10B / second<br><small>offline attack, fast hash, many cores</small></div><div class="col-xs-6">{{score.crack_times_display.offline_fast_hashing_1e10_per_second}}</div></div><div class="row"><div class="col-xs-6">Match sequence:</div><div class="col-xs-6"><span class="link" ng-click="toggleMatchBreakdown()">See match sequence</span></div></div></div></div><div class="match-sequence"><div class="sequence_container" ng-style="{\'width\': score.sequence.length * 210 }"><div class="sequence" ng-repeat="sequence in score.sequence"><table><tr><td colspan="2" class="token"><code>{{sequence.token}}</code></td></tr><tr ng-if="sequence.pattern"><td>Pattern</td><td>{{sequence.pattern}}</td></tr><tr ng-if="sequence.matched_word"><td>Matched word</td><td>{{sequence.matched_word}}</td></tr><tr ng-if="sequence.dictionary_name"><td>Dictionary name</td><td>{{sequence.dictionary_name}}</td></tr><tr ng-if="sequence.rank"><td>Rank</td><td>{{sequence.rank}}</td></tr><tr ng-if="sequence.reversed"><td>Reversed</td><td>{{sequence.reversed}}</td></tr><tr ng-if="sequence.guesses"><td>Guesses</td><td>{{sequence.guesses}}</td></tr><tr ng-if="sequence.base_guesses"><td>Base guesses</td><td>{{sequence.base_guesses}}</td></tr><tr ng-if="sequence.uppercase_variations"><td>Uppercase variations</td><td>{{sequence.uppercase_variations}}</td></tr><tr ng-if="sequence.l33t_variations"><td>l33t-variations</td><td>{{sequence.l33t_variations}}</td></tr></table></div></div></div>');
|
||||
}]);
|
||||
|
||||
angular.module('views/share_credential.html', []).run(['$templateCache', function($templateCache) {
|
||||
'use strict';
|
||||
$templateCache.put('views/share_credential.html',
|
||||
'<div id="controls"><div class="actions creatable"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a><i class="fa fa-home"></i></a></div><div class="crumb svg" data-dir="/Test"><a>{{active_vault.name}}</a></div><div class="crumb svg last" data-dir="/Test"><a ng-if="storedCredential.credential_id">Share credential "{{storedCredential.label}}"</a></div></div></div></div><ul class="tab_header"><li ng-repeat="tab in tabs track by $index" class="tab" ng-class="{active:isActiveTab(tab)}" ng-click="onClickTab(tab)">{{tab.title}}</li></ul><div class="tab_container edit_credential"><div ng-include="currentTab.url"></div><button>Share</button> <button ng-click="cancel()">Cancel</button></div>');
|
||||
}]);
|
||||
|
||||
angular.module('views/show_vault.html', []).run(['$templateCache', function($templateCache) {
|
||||
'use strict';
|
||||
$templateCache.put('views/show_vault.html',
|
||||
'<div id="controls"><div class="breadcrumb"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a><i class="fa fa-home"></i></a></div><div class="crumb svg last"><a>{{active_vault.name}}</a></div></div></div><div class="actions creatable"><span ng-click="menuOpen = !menuOpen" class="button new" ng-init="menuOpen = false" off-click="menuOpen = false;"><span>+</span></span><div class="actionList popovermenu bubble menu" ng-show="menuOpen"><ul><li><span ng-click="addCredential()" class="menuitem action"><span class="icon icon-rename"></span> <span>New credential</span></span></li><li><span href="#" class="menuitem action"><span class="icon icon-shared"></span> <span>New shared credential</span></span></li></ul></div><div class="searchboxContainer"><input type="text" ng-model="itemFilter.label" class="searchbox" placeholder="Search credential..."></div><span class="title" ng-if="delete_time">Showing deleted since: <span ng-if="delete_time == 1">All time</span> <span ng-if="delete_time > 1">{{delete_time | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</span></span></div></div><div off-click="closeSelected()" off-click-filter="\'.link, .credential-table\'"><table class="credential-table" ng-init="menuOpen = false;"><tr ng-repeat="credential in credentials | filter:itemFilter | tagFilter:selectedtags | as:this:\'filtered_credentials\'" ng-if="credential.hidden == 0 && showCredentialRow(credential)" ng-click="selectCredential(credential)" ng-class="{\'selected\': selectedCredential.credential_id == credential.credential_id}"><td><span class="icon"><i class="fa fa-lock"></i></span> <span class="label">{{credential.label}}</span> <span class="tags"><span class="tag" ng-repeat="tag in credential.tags_raw">{{tag.text}}</span></span></td></tr></table><div id="app-sidebar" class="detailsView scroll-container app_sidebar" ng-show="selectedCredential"><span class="close icon-close" ng-click="closeSelected()" alt="Close"></span><table><tr ng-show="selectedCredential.label"><td>Label</td><td>{{selectedCredential.label}}</td></tr><tr ng-show="selectedCredential.username"><td>Account</td><td><span credential-field value="selectedCredential.username"></span></td></tr><tr ng-show="selectedCredential.password"><td>Password</td><td><span credential-field value="selectedCredential.password" secret="\'true\'"></span></td></tr><tr ng-show="selectedCredential.otp.secret"><td>OTP</td><td><span otp-generator secret="selectedCredential.otp.secret"></span></td></tr><tr ng-show="selectedCredential.email"><td>E-mail</td><td><span credential-field value="selectedCredential.email"></span></td></tr><tr ng-show="selectedCredential.url"><td>URL</td><td><span credential-field value="selectedCredential.url"></span></td></tr><tr ng-show="selectedCredential.files.length > 0"><td>Files</td><td><div ng-repeat="file in selectedCredential.files" class="link" ng-click="downloadFile(file)">{{file.filename}} ({{file.size | bytes}})</div></td></tr><tr ng-repeat="field in selectedCredential.custom_fields"><td>{{field.label}}</td><td><span credential-field value="field.value" secret="field.secret"></span></td></tr><tr ng-show="selectedCredential.changed"><td>Changed</td><td>{{selectedCredential.changed * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</td></tr><tr ng-show="selectedCredential.created"><td>Created</td><td>{{selectedCredential.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</td></tr></table><div class="tags"><span class="tag" ng-repeat="tag in selectedCredential.tags">{{tag.text}}</span></div><div ng-show="selectedCredential"><span class="button" ng-click="editCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0"><span class="fa fa-edit"></span> Edit</span> <span class="button" ng-click="deleteCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0"><span class="fa fa-trash"></span> Delete</span> <span class="button" ng-if="selectedCredential.delete_time > 0" ng-click="recoverCredential(selectedCredential)"><span class="fa fa-recycle"></span> Recover</span> <span class="button" ng-if="selectedCredential.delete_time == 0"><span class="fa fa-share"></span> Share</span></div></div></div>');
|
||||
'<div id="controls"><div class="breadcrumb"><div class="breadcrumb"><div class="crumb svg ui-droppable" data-dir="/"><a><i class="fa fa-home"></i></a></div><div class="crumb svg last"><a>{{active_vault.name}}</a></div></div></div><div class="actions creatable"><span ng-click="menuOpen = !menuOpen" class="button new" ng-init="menuOpen = false" off-click="menuOpen = false;"><span>+</span></span><div class="actionList popovermenu bubble menu" ng-show="menuOpen"><ul><li><span ng-click="addCredential()" class="menuitem action"><span class="icon icon-rename"></span> <span>New credential</span></span></li><li><span href="#" class="menuitem action"><span class="icon icon-shared"></span> <span>New shared credential</span></span></li></ul></div><div class="searchboxContainer"><input type="text" ng-model="itemFilter.label" class="searchbox" placeholder="Search credential..."></div><span class="title" ng-if="delete_time">Showing deleted since: <span ng-if="delete_time == 1">All time</span> <span ng-if="delete_time > 1">{{delete_time | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</span></span></div></div><div off-click="closeSelected()"><table class="credential-table" ng-init="menuOpen = false;"><tr ng-repeat="credential in credentials | filter:itemFilter | tagFilter:selectedtags | as:this:\'filtered_credentials\'" ng-if="credential.hidden == 0 && showCredentialRow(credential)" ng-click="selectCredential(credential)" ng-class="{\'selected\': selectedCredential.credential_id == credential.credential_id}"><td><span class="icon"><i class="fa fa-lock"></i></span> <span class="label">{{credential.label}}</span> <span class="tags"><span class="tag" ng-repeat="tag in credential.tags_raw">{{tag.text}}</span></span></td></tr></table><div id="app-sidebar" class="detailsView scroll-container app_sidebar" ng-show="selectedCredential"><span class="close icon-close" ng-click="closeSelected()" alt="Close"></span><table><tr ng-show="selectedCredential.label"><td>Label</td><td>{{selectedCredential.label}}</td></tr><tr ng-show="selectedCredential.username"><td>Account</td><td><span credential-field value="selectedCredential.username"></span></td></tr><tr ng-show="selectedCredential.password"><td>Password</td><td><span credential-field value="selectedCredential.password" secret="\'true\'"></span></td></tr><tr ng-show="selectedCredential.otp.secret"><td>OTP</td><td><span otp-generator secret="selectedCredential.otp.secret"></span></td></tr><tr ng-show="selectedCredential.email"><td>E-mail</td><td><span credential-field value="selectedCredential.email"></span></td></tr><tr ng-show="selectedCredential.url"><td>URL</td><td><span credential-field value="selectedCredential.url"></span></td></tr><tr ng-show="selectedCredential.files.length > 0"><td>Files</td><td><div ng-repeat="file in selectedCredential.files" class="link" ng-click="downloadFile(file)">{{file.filename}} ({{file.size | bytes}})</div></td></tr><tr ng-repeat="field in selectedCredential.custom_fields"><td>{{field.label}}</td><td><span credential-field value="field.value" secret="field.secret"></span></td></tr><tr ng-show="selectedCredential.changed"><td>Changed</td><td>{{selectedCredential.changed * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</td></tr><tr ng-show="selectedCredential.created"><td>Created</td><td>{{selectedCredential.created * 1000 | date:\'dd-MM-yyyy @ HH:mm:ss\'}}</td></tr></table><div class="tags"><span class="tag" ng-repeat="tag in selectedCredential.tags">{{tag.text}}</span></div><div ng-show="selectedCredential"><span class="button" ng-click="editCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0"><span class="fa fa-edit"></span> Edit</span> <span class="button" ng-click="deleteCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0"><span class="fa fa-trash"></span> Delete</span> <span class="button" ng-if="selectedCredential.delete_time > 0" ng-click="recoverCredential(selectedCredential)"><span class="fa fa-recycle"></span> Recover</span> <span class="button" ng-if="selectedCredential.delete_time == 0" ng-click="shareCredential(selectedCredential)"><span class="fa fa-share"></span> Share</span></div></div></div>');
|
||||
}]);
|
||||
|
||||
angular.module('views/vaults.html', []).run(['$templateCache', function($templateCache) {
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
@import 'vaults';
|
||||
@import 'credentials';
|
||||
@import 'menu';
|
||||
@import 'share_credential';
|
||||
|
||||
#app-settings-content:not(.ng-hide) {
|
||||
height: 60px;
|
||||
|
|
3
sass/share_credential.scss
Normal file
3
sass/share_credential.scss
Normal file
|
@ -0,0 +1,3 @@
|
|||
.table{
|
||||
width: 100%;
|
||||
}
|
|
@ -29,6 +29,7 @@ script('passman', 'app/controllers/menu');
|
|||
script('passman', 'app/controllers/vault');
|
||||
script('passman', 'app/controllers/credential');
|
||||
script('passman', 'app/controllers/edit_credential');
|
||||
script('passman', 'app/controllers/share');
|
||||
script('passman', 'app/filters/range');
|
||||
script('passman', 'app/filters/propsfilter');
|
||||
script('passman', 'app/filters/byte');
|
||||
|
|
41
templates/views/partials/forms/share_credential/basics.html
Normal file
41
templates/views/partials/forms/share_credential/basics.html
Normal file
|
@ -0,0 +1,41 @@
|
|||
<div class="row">
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<div>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<td><input type="text" placeholder="Search user or groups"></td>
|
||||
|
||||
<td>
|
||||
<select>
|
||||
<option ng-repeat="lvl in accessLevels"
|
||||
value="{{lvl.value}}">
|
||||
{{lvl.label}}
|
||||
</option>
|
||||
</select>
|
||||
<button class="button">
|
||||
+
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<table class="table shared_table">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>User / group</td>
|
||||
<td>Access</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tr ng-repeat="user in share_settings.credentialSharedWithUserAndGroup">
|
||||
<td>{{user.userId}}</td>
|
||||
<td>{{user.accessLevel}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1 @@
|
|||
Expire settings
|
30
templates/views/share_credential.html
Normal file
30
templates/views/share_credential.html
Normal file
|
@ -0,0 +1,30 @@
|
|||
<div id="controls">
|
||||
<div class="actions creatable">
|
||||
<div class="breadcrumb">
|
||||
<div class="crumb svg ui-droppable" data-dir="/">
|
||||
<a><i class="fa fa-home"></i></a>
|
||||
</div>
|
||||
<div class="crumb svg" data-dir="/Test">
|
||||
<a>{{active_vault.name}}</a>
|
||||
</div>
|
||||
<div class="crumb svg last" data-dir="/Test">
|
||||
<a ng-if="storedCredential.credential_id">Share credential
|
||||
"{{storedCredential.label}}"</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="tab_header">
|
||||
<li ng-repeat="tab in tabs track by $index" class="tab"
|
||||
ng-class="{active:isActiveTab(tab)}"
|
||||
ng-click="onClickTab(tab)">{{tab.title}}</li>
|
||||
</ul>
|
||||
|
||||
<div class="tab_container edit_credential">
|
||||
<div ng-include="currentTab.url"></div>
|
||||
|
||||
<button>Share</button>
|
||||
<button ng-click="cancel()">Cancel</button>
|
||||
</div>
|
||||
|
||||
|
|
@ -10,7 +10,6 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="actions creatable">
|
||||
|
||||
<span ng-click="menuOpen = !menuOpen" class="button new"
|
||||
ng-init="menuOpen = false" off-click="menuOpen = false;">
|
||||
<span
|
||||
|
@ -45,7 +44,7 @@
|
|||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div off-click="closeSelected()" off-click-filter="'.link, .credential-table'">
|
||||
<div off-click="closeSelected()">
|
||||
<table class="credential-table" ng-init="menuOpen = false;">
|
||||
<tr ng-repeat="credential in credentials | filter:itemFilter | tagFilter:selectedtags | as:this:'filtered_credentials'"
|
||||
ng-if="credential.hidden == 0 && showCredentialRow(credential)"
|
||||
|
@ -145,8 +144,7 @@
|
|||
Changed
|
||||
</td>
|
||||
<td>
|
||||
{{selectedCredential.changed * 1000 | date:'dd-MM-yyyy @
|
||||
HH:mm:ss'}}
|
||||
{{selectedCredential.changed * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-show="selectedCredential.created">
|
||||
|
@ -154,31 +152,28 @@
|
|||
Created
|
||||
</td>
|
||||
<td>
|
||||
{{selectedCredential.created * 1000 | date:'dd-MM-yyyy @
|
||||
HH:mm:ss'}}
|
||||
{{selectedCredential.created * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<div class="tags">
|
||||
<span class="tag" ng-repeat="tag in selectedCredential.tags">{{tag.text}}</span>
|
||||
<span class="tag" ng-repeat="tag in selectedCredential.tags">{{tag.text}}</span>
|
||||
</div>
|
||||
|
||||
<div ng-show="selectedCredential">
|
||||
<span class="button" ng-click="editCredential(selectedCredential)"
|
||||
ng-if="selectedCredential.delete_time == 0">
|
||||
<span class="button" ng-click="editCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0" >
|
||||
<span class="fa fa-edit"></span> Edit
|
||||
</span>
|
||||
<span class="button" ng-click="deleteCredential(selectedCredential)"
|
||||
ng-if="selectedCredential.delete_time == 0">
|
||||
<span class="fa fa-trash"></span> Delete
|
||||
<span class="button" ng-click="deleteCredential(selectedCredential)" ng-if="selectedCredential.delete_time == 0" >
|
||||
<span class="fa fa-trash" ></span> Delete
|
||||
</span>
|
||||
<span class="button" ng-if="selectedCredential.delete_time > 0"
|
||||
ng-click="recoverCredential(selectedCredential)">
|
||||
<span class="fa fa-recycle"></span> Recover
|
||||
</span>
|
||||
<span class="button" ng-if="selectedCredential.delete_time == 0">
|
||||
<span class="button" ng-if="selectedCredential.delete_time == 0" ng-click="shareCredential(selectedCredential)">
|
||||
<span class="fa fa-share"></span> Share
|
||||
</span>
|
||||
</div>
|
||||
|
|
Loading…
Add table
Reference in a new issue