mirror of
				https://github.com/nextcloud/passman.git
				synced 2025-11-01 00:06:00 +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