diff options
author | brantje <brantje@gmail.com> | 2017-02-17 23:25:18 +0300 |
---|---|---|
committer | brantje <brantje@gmail.com> | 2017-02-17 23:25:18 +0300 |
commit | 6767322a22bae9549b439fac40bbdbd2a2df8fee (patch) | |
tree | 2bfcd4ec82685f31b226168f4a76ad8f0ba15b0c /templates | |
parent | 76852c0d77c81766fe706afb9293eff40187c7a4 (diff) |
Lock vault after 3 wrong attempts (Fixes #197)
Fix share button, fix shared_key not added to storedCredential after sharing (Fixes #249)
Add password app importer. Fixes #248
Fix version check via proxy. Fixes #237
Fix activity app not filtering. Fixes #246
Add EnPass txt importer. Fixes #159
Fix for disabled share button
Require vault key for export. Fixes #199
Indicate that sharing only works with users that have 1 or more vaults.
Fixes #242
Reset tags on logout. Fixes #245
Ability to enter OTP secret manually. Fixes #198
Create teampass importer. Fixes #244
Diffstat (limited to 'templates')
-rw-r--r-- | templates/main.php | 5 | ||||
-rw-r--r-- | templates/part.admin.php | 32 | ||||
-rw-r--r-- | templates/views/partials/forms/edit_credential/otp.html | 24 | ||||
-rw-r--r-- | templates/views/partials/forms/settings/export.html | 21 | ||||
-rw-r--r-- | templates/views/partials/forms/settings/import.html | 7 | ||||
-rw-r--r-- | templates/views/partials/forms/share_credential/basics.html | 5 | ||||
-rw-r--r-- | templates/views/share_credential.html | 4 | ||||
-rw-r--r-- | templates/views/show_vault.html | 2 | ||||
-rw-r--r-- | templates/views/vaults.html | 10 |
9 files changed, 79 insertions, 31 deletions
diff --git a/templates/main.php b/templates/main.php index f2ee788c..ec91a71f 100644 --- a/templates/main.php +++ b/templates/main.php @@ -82,7 +82,10 @@ script('passman', 'importers/importer-lastpasscsv'); script('passman', 'importers/importer-dashlanecsv'); script('passman', 'importers/importer-zohocsv'); script('passman', 'importers/importer-passmanjson'); +script('passman', 'importers/importer-ocpasswords'); script('passman', 'importers/importer-clipperz'); +script('passman', 'importers/importer-teampass'); +script('passman', 'importers/importer-enpass'); script('passman', 'importers/importer-passpackcsv'); script('passman', 'importers/importer-randomdata'); script('passman', 'exporters/exporter-main'); @@ -96,7 +99,7 @@ script('passman', 'exporters/exporter-csv'); /*build-css-start*/ style('passman', 'vendor/ng-password-meter/ng-password-meter'); style('passman', 'vendor/bootstrap/bootstrap.min'); -style('passman', 'vendor/bootstrap/bootstrap-theme.min'); + style('passman', 'vendor/font-awesome/font-awesome.min'); style('passman', 'vendor/angular-xeditable/xeditable.min'); style('passman', 'vendor/ng-tags-input/ng-tags-input.min'); diff --git a/templates/part.admin.php b/templates/part.admin.php index e2bda70b..10b7d98d 100644 --- a/templates/part.admin.php +++ b/templates/part.admin.php @@ -9,17 +9,31 @@ $checkVersion = OC::$server->getConfig()->getAppValue('passman', 'check_version' $AppInstance = new App(); $localVersion = $AppInstance->getAppInfo("passman")["version"]; if ($checkVersion) { -// get latest master version - $doc = new DOMDocument(); - $doc->load('https://raw.githubusercontent.com/nextcloud/passman/master/appinfo/info.xml'); - $root = $doc->getElementsByTagName("info"); + // get latest master version $version = false; $githubVersion = $l->t('Unable to get version info'); - foreach ($root as $element) { - $versions = $element->getElementsByTagName("version"); - $version = $versions->item(0)->nodeValue; + + $url = 'https://raw.githubusercontent.com/nextcloud/passman/master/appinfo/info.xml'; + try { + $client = OC::$server->getHTTPClientService()->newClient(); + $response = $client->get($url); + $xml = $response->getBody(); + } catch (\Exception $e) { + $xml = false; } - if ($version) { + + if ($xml) { + $loadEntities = libxml_disable_entity_loader(true); + $data = @simplexml_load_string($xml); + libxml_disable_entity_loader($loadEntities); + if ($data !== false) { + $version = (string)$data->version; + } else { + libxml_clear_errors(); + } + } + + if ($version !== false) { $githubVersion = $version; } } @@ -36,7 +50,7 @@ $ciphers = openssl_get_cipher_methods(); } ?> Local version: <?php p($localVersion); ?><br/> <?php - if (version_compare($githubVersion, $localVersion) === 1) { + if ($checkVersion && version_compare($githubVersion, $localVersion) === 1) { p($l->t('A newer version of passman is available')); } ?> diff --git a/templates/views/partials/forms/edit_credential/otp.html b/templates/views/partials/forms/edit_credential/otp.html index 5c0fc261..07a4635d 100644 --- a/templates/views/partials/forms/edit_credential/otp.html +++ b/templates/views/partials/forms/edit_credential/otp.html @@ -1,18 +1,24 @@ <div class="row"> <div class="col-xs-12"> - <div class="col-xs-2 nopadding"> - {{ 'upload.qr' | translate}} + <div class="col-xs-4 nopadding"> + <span class="otpText">{{ 'upload.qr' | translate}}</span> + <select ng-model="otpType"> + <option value="qrcode">Upload QR code</option> + <option value="secret">Enter secret</option> + </select> </div> <div class="col-xs-6 nopadding"> <input type="file" qrread on-read="parseQR(qrdata)" class="input_secret" - on-read="parseQR(qrdata)"/> + on-read="parseQR(qrdata)" ng-show="otpType === 'qrcode'"/> + <input type="text" ng-model="storedCredential.otp.secret" ng-show="otpType === 'secret'"> </div> </div> </div> <div class="row"> - <div class="col-xs-12" ng-if="storedCredential.otp">{{ 'current.qr' | translate}} + <div class="col-xs-12" ng-if="storedCredential.otp"> + <b>{{ 'current.qr' | translate}}</b> </div> </div> <div class="row"> @@ -22,23 +28,23 @@ <div class="col-sm-4 col-sm-5 col-md-5"> <table ng-show="storedCredential.otp"> <tr ng-show="storedCredential.otp.type"> - <td>{{ 'type' | translate}}:</td> + <td>{{ 'type' | translate}}: </td> <td>{{storedCredential.otp.type}}</td> </tr> <tr ng-show="storedCredential.otp.label"> - <td>{{ 'label' | translate}}:</td> + <td>{{ 'label' | translate}}: </td> <td>{{storedCredential.otp.label}}</td> </tr> <tr ng-show="storedCredential.otp.issuer"> - <td>{{ 'issuer' | translate}}:</td> + <td>{{ 'issuer' | translate}}: </td> <td>{{storedCredential.otp.issuer}}</td> </tr> <tr ng-show="storedCredential.otp.secret"> - <td>{{ 'secret' | translate}}:</td> + <td>{{ 'secret' | translate}}: </td> <td>{{storedCredential.otp.secret}}</td> </tr> <tr ng-show="storedCredential.otp.secret"> - <td>{{ 'otp' | translate}}:</td> + <td>{{ 'otp' | translate}}: </td> <td><span otp-generator secret="storedCredential.otp.secret"></span> </td> diff --git a/templates/views/partials/forms/settings/export.html b/templates/views/partials/forms/settings/export.html index 2ede0a7d..f39c22f9 100644 --- a/templates/views/partials/forms/settings/export.html +++ b/templates/views/partials/forms/settings/export.html @@ -10,13 +10,26 @@ </option> </select></label> <div><b>{{selectedExporter.description}}</b></div> - <button class="button" ng-click="startExport()" - ng-if="selectedExporter">{{ 'export' | translate}} - </button> + + <div ng-show="selectedExporter" class="col-xs-3 nopadding"> + <label>{{ 'export.confirm.text' | translate }}</label> + <input type="password" ng-model="confirm_key"> + <br /> + <div class="alert alert-warning" ng-show="error"> + {{error}} + </div> + </div> + <div class="clearfix"> + <button class=" button" ng-click="startExport()" + ng-if="selectedExporter">{{ 'export' | translate}} + </button> + </div> </div> + <div class="col-xs-6"> <div ng-if="log" class="import_log"> - <textarea id="import_log" auto-scroll="log">{{log.join('\n')}}</textarea> + <textarea id="import_log" + auto-scroll="log">{{log.join('\n')}}</textarea> </div> </div> </div> diff --git a/templates/views/partials/forms/settings/import.html b/templates/views/partials/forms/settings/import.html index d0f69be4..3e66d8d2 100644 --- a/templates/views/partials/forms/settings/import.html +++ b/templates/views/partials/forms/settings/import.html @@ -9,7 +9,12 @@ {{importer.name}} </option> </select></label> - <div><b>{{selectedImporter.description}}</b></div> + <div ng-show="selectedImporter"> + <b>{{ 'import.steps' | translate }}</b> + <ul class="import-steps"> + <li ng-repeat="step in selectedImporter.exportSteps">{{step}}</li> + </ul> + </div> <input ng-if="selectedImporter" type="file" file-select success="fileLoaded" error="fileLoadError" progress="fileSelectProgress"><br/> diff --git a/templates/views/partials/forms/share_credential/basics.html b/templates/views/partials/forms/share_credential/basics.html index 539bc8d8..f3142d25 100644 --- a/templates/views/partials/forms/share_credential/basics.html +++ b/templates/views/partials/forms/share_credential/basics.html @@ -22,6 +22,11 @@ </button> </td> </tr> + <tr> + <td colspan="2"> + <small>{{ 'search.result.missing' | translate}}</small> + </td> + </tr> </thead> </table> diff --git a/templates/views/share_credential.html b/templates/views/share_credential.html index 84896c96..45fe8c9d 100644 --- a/templates/views/share_credential.html +++ b/templates/views/share_credential.html @@ -27,9 +27,9 @@ <div class="tab_container share_credential" ng-show="currentTab"> <div ng-include="currentTab.url"></div> - <button ng-click="applyShare()" ng-disabled="!share_settings.linkSharing.enabled || share_settings.credentialSharedWithUserAndGroup.length > 0">{{ 'share' | translate}}</button> + <button ng-click="applyShare()" ng-disabled="share_settings.linkSharing.enabled === false && share_settings.credentialSharedWithUserAndGroup.length === 0">{{ 'share' | translate}}</button> <button ng-click="cancel()">{{ 'cancel' | translate}}</button> - <button class="btn btn-danger" ng-click="unshareCredential(storedCredential)">{{ 'unshare' | translate}}</button> + <button class="btn btn-danger" ng-disabled="!storedCredential.shared_key" ng-click="unshareCredential(storedCredential)">{{ 'unshare' | translate}}</button> </div> diff --git a/templates/views/show_vault.html b/templates/views/show_vault.html index 7107722f..a584d46b 100644 --- a/templates/views/show_vault.html +++ b/templates/views/show_vault.html @@ -6,7 +6,7 @@ <a><i class="fa fa-home"></i></a> </div> <div class="crumb svg last" ng-click="clearState()"> - <a>{{active_vault.name}}</a> + <span>{{active_vault.name}}</span> </div> </div> </div> diff --git a/templates/views/vaults.html b/templates/views/vaults.html index 17a45e28..6fb12e40 100644 --- a/templates/views/vaults.html +++ b/templates/views/vaults.html @@ -95,7 +95,7 @@ <span ng-if="list_selected_vault.last_access === 0">Never</span> </small> </div> - <div> + <div class="login_opts"> <div> <label> <input type="checkbox" ng-checked="default_vault" @@ -128,10 +128,12 @@ </select> </div> </div> - <div class="button button-geen" - ng-click="loginToVault(list_selected_vault, vault_key)"> + + <div class="alert alert-danger" ng-show="vault_tries[list_selected_vault.guid].timeout !== 0" translate="vault.locked" translate-value-tries="{{ vault_tries[list_selected_vault.guid].tries }}" translate-value-time="{{ vault_tries[list_selected_vault.guid].timeout | toHHMMSS }}"></div> + <button class="button button-geen" + ng-click="loginToVault(list_selected_vault, vault_key)" ng-disabled="vault_tries[list_selected_vault.guid].timeout !== 0"> {{ 'vault.decrypt' | translate}} - </div> + </button> </div> </div> |