2016-09-25 23:55:29 +08:00
|
|
|
<div id="passman-controls">
|
2016-09-12 04:14:11 +08:00
|
|
|
<div class="breadcrumb">
|
2016-09-21 02:51:41 +08:00
|
|
|
<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>
|
2016-09-12 04:14:11 +08:00
|
|
|
</div>
|
2016-09-27 01:15:39 +08:00
|
|
|
<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>
|
2016-09-12 04:14:11 +08:00
|
|
|
<div class="actions creatable">
|
2016-10-07 02:38:19 +08:00
|
|
|
<span ng-click="addCredential()" class="button new">
|
|
|
|
<span >+</span></span>
|
2016-09-12 04:14:11 +08:00
|
|
|
</div>
|
2016-10-07 19:56:17 +08:00
|
|
|
<div class="title" ng-show="filtered_credentials.length > 0">
|
|
|
|
Showing {{filtered_credentials.length}} of {{active_vault.credentials.length - 1}} credentials
|
|
|
|
</div>
|
2016-09-25 23:55:29 +08:00
|
|
|
<div class="searchboxContainer">
|
|
|
|
<input type="text" ng-model="filterOptions.filterText" class="searchbox"
|
2016-09-26 16:37:43 +08:00
|
|
|
placeholder="Search credential..." select-on-click>
|
2016-09-25 23:55:29 +08:00
|
|
|
</div>
|
2016-09-28 06:14:32 +08:00
|
|
|
<div class="viewModes">
|
|
|
|
<div class="view-mode" ng-class="{'active': view_mode === 'list' }"
|
|
|
|
ng-click="switchViewMode('list')"><i class="fa fa-list"></i></div>
|
|
|
|
<div class="view-mode" ng-class="{'active': view_mode === 'grid' }"
|
|
|
|
ng-click="switchViewMode('grid')"><i class="fa fa-th-large"></i>
|
|
|
|
</div>
|
|
|
|
</div>
|
2016-09-12 04:14:11 +08:00
|
|
|
</div>
|
2016-10-07 01:50:22 +08:00
|
|
|
<div off-click="closeSelected()" off-click-filter="'.download-js-link'">
|
2016-09-27 01:15:39 +08:00
|
|
|
|
2016-09-30 23:44:21 +08:00
|
|
|
<div class="loaderContainer" ng-if="show_spinner">
|
2016-09-27 01:15:39 +08:00
|
|
|
<div class="loader" use-theme type="'border-bottom-color'"></div>
|
|
|
|
</div>
|
2016-09-28 06:14:32 +08:00
|
|
|
<div ng-init="menuOpen = false;">
|
|
|
|
<table class="credential-table"
|
|
|
|
ng-if="view_mode === 'list'">
|
2016-10-07 17:15:51 +08:00
|
|
|
<tr ng-repeat="credential in filtered_credentials | orderBy:'label'"
|
2016-10-07 18:16:44 +08:00
|
|
|
ng-if="showCredentialRow(credential)"
|
2016-09-28 06:14:32 +08:00
|
|
|
ng-click="selectCredential(credential)"
|
|
|
|
ng-class="{'selected': selectedCredential.credential_id == credential.credential_id}">
|
|
|
|
<td>
|
2016-10-07 19:46:52 +08:00
|
|
|
<span class="tags">
|
|
|
|
<span class="tag" ng-repeat="tag in credential.tags_raw">{{ ::tag.text}}</span>
|
|
|
|
|
|
|
|
</span>
|
2016-10-03 03:34:05 +08:00
|
|
|
<span class="icon">
|
2016-10-06 01:46:03 +08:00
|
|
|
<i class="fa fa-lock" ng-if="!credential.acl && !credential.shared_key"></i>
|
2016-10-03 03:34:05 +08:00
|
|
|
<i class="fa fa-share-alt" ng-if="credential.acl"></i>
|
2016-10-06 05:26:31 +08:00
|
|
|
<i class="fa fa-share-alt-square" ng-if="credential.shared_key"> </i>
|
2016-10-03 03:34:05 +08:00
|
|
|
</span>
|
2016-10-01 00:21:17 +08:00
|
|
|
<span class="label">{{ ::credential.label}}</span>
|
2016-09-16 03:43:23 +08:00
|
|
|
|
2016-10-07 19:46:52 +08:00
|
|
|
|
2016-09-28 06:14:32 +08:00
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
</table>
|
2016-10-07 17:15:51 +08:00
|
|
|
|
2016-09-30 23:44:21 +08:00
|
|
|
<ul class="grid-view" ng-if="view_mode === 'grid'">
|
2016-10-02 22:10:04 +08:00
|
|
|
<li class="credential"
|
2016-10-07 17:15:51 +08:00
|
|
|
ng-repeat="credential in filtered_credentials | orderBy:'label'"
|
2016-10-02 22:10:04 +08:00
|
|
|
ng-if="credential.hidden == 0 && showCredentialRow(credential)"
|
|
|
|
ng-click="selectCredential(credential)"
|
|
|
|
use-theme type="'border-color'">
|
|
|
|
<div class="credential_content">
|
|
|
|
<div class="label">{{ ::credential.label}}</div>
|
|
|
|
<div class="tags">
|
|
|
|
<div class="tag" ng-repeat="tag in credential.tags_raw">
|
|
|
|
{{ ::tag.text}}
|
2016-09-28 06:14:32 +08:00
|
|
|
</div>
|
|
|
|
</div>
|
2016-10-02 22:10:04 +08:00
|
|
|
</div>
|
|
|
|
</li>
|
2016-09-28 06:14:32 +08:00
|
|
|
</ul>
|
|
|
|
</div>
|
2016-09-15 06:11:59 +08:00
|
|
|
<div id="app-sidebar" class="detailsView scroll-container app_sidebar"
|
|
|
|
ng-show="selectedCredential">
|
2016-10-07 18:10:06 +08:00
|
|
|
<h2>{{selectedCredential.label}}</h2>
|
2016-09-15 06:11:59 +08:00
|
|
|
<span class="close icon-close" ng-click="closeSelected()"
|
|
|
|
alt="Close"></span>
|
2016-09-16 20:01:25 +08:00
|
|
|
|
2016-10-07 18:10:06 +08:00
|
|
|
<div class="credential-data">
|
|
|
|
<div class="row" ng-show="selectedCredential.username">
|
|
|
|
<div class="col-xs-4 col-md-3 col-lg-3">Account</div>
|
|
|
|
<div class="col-xs-8 col-md-9 col-lg-9"><span credential-field
|
|
|
|
value="selectedCredential.username"></span></div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="row" ng-show="selectedCredential.password">
|
|
|
|
<div class="col-xs-4 col-md-3 col-lg-3">Password</div>
|
|
|
|
<div class="col-xs-8 col-md-9 col-lg-9">
|
|
|
|
<span credential-field value="selectedCredential.password" secret="'true'">
|
|
|
|
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="row" ng-show="selectedCredential.otp.secret">
|
|
|
|
<div class="col-xs-4 col-md-3 col-lg-3">OTP</div>
|
|
|
|
<div class="col-xs-8 col-md-9 col-lg-9"><span otp-generator
|
|
|
|
secret="selectedCredential.otp.secret"></span></div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="row" ng-show="selectedCredential.email">
|
|
|
|
<div class="col-xs-4 col-md-3 col-lg-3">E-mail</div>
|
|
|
|
<div class="col-xs-8 col-md-9 col-lg-9"><span credential-field
|
|
|
|
value="selectedCredential.email"></span></div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="row" ng-show="selectedCredential.url">
|
|
|
|
<div class="col-xs-4 col-md-3 col-lg-3">URL</div>
|
|
|
|
<div class="col-xs-8 col-md-9 col-lg-9"><span credential-field
|
|
|
|
value="selectedCredential.url"></span></div>
|
|
|
|
</div>
|
|
|
|
|
2016-10-13 01:35:36 +08:00
|
|
|
<div class="row" ng-show="selectedCredential.description">
|
|
|
|
<div class="col-xs-4 col-md-3 col-lg-3">Notes</div>
|
|
|
|
<div class="col-xs-8 col-md-9 col-lg-9" ng-bind-html="selectedCredential.description_html"></div>
|
|
|
|
</div>
|
|
|
|
|
2016-10-07 18:10:06 +08:00
|
|
|
<div class="row" ng-show="selectedCredential.files.length > 0">
|
|
|
|
<div class="col-xs-4 col-md-3 col-lg-3">Files</div>
|
|
|
|
<div class="col-xs-8 col-md-9 col-lg-9"><div ng-repeat="file in selectedCredential.files"
|
|
|
|
class="link" ng-click="downloadFile(selectedCredential, file)">
|
|
|
|
{{file.filename}} ({{file.size | bytes}})
|
|
|
|
</div></div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="row" ng-repeat="field in selectedCredential.custom_fields">
|
2016-10-07 23:22:58 +08:00
|
|
|
<div class="col-xs-4 col-md-3 col-lg-3">{{field.label}}</div>
|
2016-10-07 18:10:06 +08:00
|
|
|
<div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="field.value"
|
|
|
|
secret="field.secret"></span></div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="row" ng-show="selectedCredential.expire_time > 0">
|
|
|
|
<div class="col-xs-4 col-md-3 col-lg-3">Expire time</div>
|
|
|
|
<div class="col-xs-8 col-md-9 col-lg-9">
|
|
|
|
{{selectedCredential.expire_time * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="row" ng-show="selectedCredential.changed">
|
|
|
|
<div class="col-xs-4 col-md-3 col-lg-3">Changed</div>
|
|
|
|
<div class="col-xs-8 col-md-9 col-lg-9">
|
|
|
|
{{selectedCredential.changed * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="row" ng-show="selectedCredential.created">
|
|
|
|
<div class="col-xs-4 col-md-3 col-lg-3">Created</div>
|
|
|
|
<div class="col-xs-8 col-md-9 col-lg-9">
|
|
|
|
{{selectedCredential.created * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}
|
2016-10-07 18:31:17 +08:00
|
|
|
</div>
|
2016-10-07 18:10:06 +08:00
|
|
|
</div>
|
2016-09-16 20:01:25 +08:00
|
|
|
|
2016-10-07 18:31:17 +08:00
|
|
|
<div class="row">
|
|
|
|
<div class="col-xs-12">
|
|
|
|
<div class="tags">
|
|
|
|
<span class="tag" ng-repeat="tag in selectedCredential.tags">{{tag.text}}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2016-09-16 20:01:25 +08:00
|
|
|
</div>
|
|
|
|
|
2016-10-07 18:31:17 +08:00
|
|
|
|
|
|
|
|
2016-09-15 06:19:56 +08:00
|
|
|
<div ng-show="selectedCredential">
|
2016-10-04 02:33:32 +08:00
|
|
|
<div>
|
2016-10-03 03:47:57 +08:00
|
|
|
<button class="button"
|
|
|
|
ng-click="editCredential(selectedCredential)"
|
2016-10-04 02:33:32 +08:00
|
|
|
ng-if="selectedCredential.delete_time == 0 && hasPermission(selectedCredential.acl.permissions, permissions.permissions.WRITE)">
|
2016-10-03 03:47:57 +08:00
|
|
|
<span class="fa fa-edit"></span> Edit
|
|
|
|
</button>
|
|
|
|
<button class="button"
|
|
|
|
ng-click="deleteCredential(selectedCredential)"
|
2016-10-04 02:33:32 +08:00
|
|
|
ng-if="selectedCredential.delete_time == 0 && hasPermission(selectedCredential.acl.permissions, permissions.permissions.WRITE)">
|
2016-10-03 03:47:57 +08:00
|
|
|
<span class="fa fa-trash"></span> Delete
|
|
|
|
</button>
|
|
|
|
<button class="button"
|
|
|
|
ng-click="shareCredential(selectedCredential)"
|
2016-10-04 02:33:32 +08:00
|
|
|
ng-if="selectedCredential.delete_time == 0 && selectedCredential.acl === undefined">
|
2016-10-03 03:47:57 +08:00
|
|
|
<span class="fa fa-share"></span> Share
|
|
|
|
</button>
|
2016-09-24 16:59:37 +08:00
|
|
|
|
2016-10-03 03:47:57 +08:00
|
|
|
<button class="button"
|
|
|
|
ng-click="getRevisions(selectedCredential)"
|
2016-10-04 02:33:32 +08:00
|
|
|
ng-if="selectedCredential.delete_time == 0 && hasPermission(selectedCredential.acl.permissions, permissions.permissions.HISTORY)">
|
2016-10-03 03:47:57 +08:00
|
|
|
<span class="fa fa-undo"></span> Revisions
|
|
|
|
</button>
|
|
|
|
|
|
|
|
<button class="button"
|
|
|
|
ng-if="selectedCredential.delete_time > 0"
|
2016-10-04 02:33:32 +08:00
|
|
|
ng-click="recoverCredential(selectedCredential) && hasPermission(selectedCredential.acl.permissions, permissions.permissions.WRITE)">
|
2016-10-03 03:47:57 +08:00
|
|
|
<span class="fa fa-recycle"></span> Recover
|
|
|
|
</button>
|
|
|
|
<button class="button"
|
|
|
|
ng-if="selectedCredential.delete_time > 0"
|
|
|
|
ng-click="destroyCredential(selectedCredential)">
|
|
|
|
<span class="fa fa-bomb"></span> Destroy
|
|
|
|
</button>
|
|
|
|
</div>
|
2016-09-15 06:11:59 +08:00
|
|
|
</div>
|
|
|
|
</div>
|
2016-10-07 18:31:17 +08:00
|
|
|
|
2016-10-02 22:10:04 +08:00
|
|
|
</div>
|
2016-10-07 18:31:17 +08:00
|
|
|
|
2016-10-02 22:10:04 +08:00
|
|
|
<div class="share_popup" style="display: none">
|
|
|
|
You have incoming share requests.<br/>
|
|
|
|
If you want to the credential in a other vault,<br/> logout of this vault
|
|
|
|
and login to the vault you want the shared credential in.
|
|
|
|
{{active_vault.vault_id}}
|
|
|
|
<table class="table">
|
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<td>Label</td>
|
|
|
|
<td>Permissions</td>
|
|
|
|
<td>Received from</td>
|
|
|
|
<td>Date</td>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
2016-10-03 03:47:57 +08:00
|
|
|
<tr ng-repeat="share_request in incoming_share_requests"
|
|
|
|
ng-if="share_request.target_vault_id == active_vault.vault_id">
|
2016-10-02 22:10:04 +08:00
|
|
|
<td>
|
|
|
|
{{share_request.credential_label}}
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
{{share_request.permissions}}
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
{{share_request.from_user_id}}
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
{{share_request.created * 1000 | date:'dd-MM-yyyy @
|
|
|
|
HH:mm:ss'}}
|
|
|
|
</td>
|
|
|
|
<td>
|
2016-10-03 03:47:57 +08:00
|
|
|
<span class="link" ng-click="acceptShareRequest(share_request)">Accept</span>
|
2016-10-06 05:06:29 +08:00
|
|
|
| <span class="link" ng-click="declineShareRequest(share_request)">Decline</span>
|
2016-10-02 22:10:04 +08:00
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
</table>
|
2016-09-15 03:12:10 +08:00
|
|
|
</div>
|