passman/templates/views/show_vault.html
brantje 0a386d77ce
Remove server side encryption setting at admin page.
Fix counting credentials (Fixes #235)

Fix for deleting shared credental (Fixes #232)

Fix for empty sharing keys in vaults (Fixes #230)

Fix removed shared credential leaves tags

Fix for lastpass import #233

Disable share button when link sharing is disabled.
Or when it's not shared with a user.

Add issue template

Bump version
2017-02-13 17:29:29 +01:00

259 lines
No EOL
9.9 KiB
HTML

<div off-click="closeSelected()" off-click-filter="'.download-js-link, .sidebar-shown'">
<div id="passman-controls" ng-class="{ 'sidebar-shown': selectedCredential }">
<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" ng-click="clearState()">
<a>{{active_vault.name}}</a>
</div>
</div>
</div>
<div class="actions creatable">
<span ng-click="addCredential()" class="button new">
<span >+</span></span>
</div>
<div class="title" credential-counter="filtered_credentials" vault="active_vault" delete-time="delete_time" filters="filterOptions"></div>
<!--<span class="title" ng-if="delete_time"><br />
{{ 'deleted.since' | translate }}:
<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 class="searchboxContainer" ng-init="filterOptionShown = false;" off-click="filterOptionShown = false;">
<input type="text" ng-model="filterOptions.filterText" class="searchbox" id="searchBox"
placeholder="{{'search.credential' | translate}}" select-on-click clear-btn ng-click="filterOptionShown = true;">
<div class="searchOptions" ng-show="filterOptionShown">
<input type="checkbox" ng-model="filterOptions.useRegex"> {{ 'use.regex' | translate }}
</div>
</div>
<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>
</div>
<div class="loaderContainer" ng-if="show_spinner">
<div class="loader" use-theme type="'border-bottom-color'"></div>
</div>
<div ng-init="menuOpen = false;">
<table class="credential-table"
ng-if="view_mode === 'list'">
<tr ng-repeat="credential in filtered_credentials | orderBy:'label'"
ng-if="showCredentialRow(credential)"
ng-click="selectCredential(credential)" ng-dblclick="editCredential(credential)"
ng-class="{'selected': selectedCredential.credential_id == credential.credential_id}">
<td>
<span class="tags">
<span class="tag" ng-repeat="tag in credential.tags_raw">{{ ::tag.text}}</span>
</span>
<span class="icon">
<i class="fa fa-lock" ng-if="!credential.acl && !credential.shared_key"></i>
<i class="fa fa-share-alt" ng-if="credential.acl"></i>
<i class="fa fa-share-alt-square" ng-if="credential.shared_key"> </i>
</span>
<span class="label">{{ ::credential.label}}</span>
</td>
</tr>
</table>
<ul class="grid-view" ng-if="view_mode === 'grid'">
<li class="credential"
ng-repeat="credential in filtered_credentials | orderBy:'label'"
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}}
</div>
</div>
</div>
</li>
</ul>
</div>
<div id="app-sidebar" class="detailsView scroll-container app_sidebar"
ng-show="selectedCredential">
<h2>{{selectedCredential.label}}</h2>
<span class="close icon-close" ng-click="closeSelected()"
alt="Close"></span>
<div class="credential-data">
<div class="row" ng-show="selectedCredential.username">
<div class="col-xs-4 col-md-3 col-lg-3">{{ 'account' | translate }}</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' | translate }}</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' | translate}}</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">{{'email' | translate}}</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' | translate}}</div>
<div class="col-xs-8 col-md-9 col-lg-9"><span credential-field
value="selectedCredential.url"></span></div>
</div>
<div class="row" ng-show="selectedCredential.description">
<div class="col-xs-4 col-md-3 col-lg-3">{{'notes' | translate}}</div>
<div class="col-xs-8 col-md-9 col-lg-9"><span credential-field value="selectedCredential.description_html"></span></div>
</div>
<div class="row" ng-show="selectedCredential.files.length > 0">
<div class="col-xs-4 col-md-3 col-lg-3">{{ 'files' | translate}}</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">
<div class="col-xs-4 col-md-3 col-lg-3">{{field.label}}</div>
<div class="col-xs-8 col-md-9 col-lg-9">
<span credential-field value="field.value" secret="field.secret" ng-if="field.field_type !== 'file' || !field.field_type"></span>
<span ng-if="field.field_type === 'file'" class="link" ng-click="downloadFile(selectedCredential, field.value)">{{field.value.filename}} ({{field.value.size | bytes}})</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' | translate }}</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' | translate}}</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' | translate}}</div>
<div class="col-xs-8 col-md-9 col-lg-9">
{{selectedCredential.created * 1000 | date:'dd-MM-yyyy @ HH:mm:ss'}}
</div>
</div>
<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>
</div>
<div ng-show="selectedCredential">
<div>
<button class="button"
ng-click="editCredential(selectedCredential)"
ng-if="selectedCredential.delete_time == 0 && hasPermission(selectedCredential.acl.permissions, permissions.permissions.WRITE)">
<span class="fa fa-edit"></span> {{ 'edit' | translate}}
</button>
<button class="button"
ng-click="deleteCredential(selectedCredential)"
ng-if="selectedCredential.delete_time == 0 && hasPermission(selectedCredential.acl.permissions, permissions.permissions.WRITE)">
<span class="fa fa-trash"></span> {{ 'delete' | translate}}
</button>
<button class="button"
ng-click="shareCredential(selectedCredential)"
ng-if="selectedCredential.delete_time == 0 && selectedCredential.acl === undefined &&
(settings.user_sharing_enabled === 1 || settings.user_sharing_enabled === '1' || settings.link_sharing_enabled === 1 || settings.link_sharing_enabled === '1')">
<span class="fa fa-share"></span> {{ 'share' | translate}}
</button>
<button class="button"
ng-click="getRevisions(selectedCredential)"
ng-if="selectedCredential.delete_time == 0 && hasPermission(selectedCredential.acl.permissions, permissions.permissions.HISTORY)">
<span class="fa fa-undo"></span> {{ 'revisions' | translate}}
</button>
<button class="button"
ng-if="selectedCredential.delete_time > 0"
ng-click="recoverCredential(selectedCredential) && hasPermission(selectedCredential.acl.permissions, permissions.permissions.WRITE)">
<span class="fa fa-recycle"></span> {{'recover' | translate}}
</button>
<button class="button"
ng-if="selectedCredential.delete_time > 0"
ng-click="destroyCredential(selectedCredential)">
<span class="fa fa-bomb"></span> {{'destroy' | translate}}
</button>
</div>
</div>
</div>
</div>
<div class="share_popup" style="display: none">
{{ 'sharereq.title' | translate}}<br/>
{{ 'sharereq.line1' | translate}}<br/>
{{ 'sharereq.line2' | translate}}
{{active_vault.vault_id}}
<table class="table">
<thead>
<tr>
<td>{{ 'label' | translate}}</td>
<td>{{ 'permissions' | translate}}</td>
<td>{{ 'received.from' | translate}}</td>
<td>{{ 'date' | translate}}</td>
</tr>
</thead>
<tr ng-repeat="share_request in incoming_share_requests"
ng-if="share_request.target_vault_id == active_vault.vault_id">
<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>
<span class="link" ng-click="acceptShareRequest(share_request)">{{ 'accept' | translate}}</span>
| <span class="link" ng-click="declineShareRequest(share_request)">{{ 'decline' | translate}}</span>
</td>
</tr>
</table>
</div>