diff --git a/Gruntfile.js b/Gruntfile.js
index 50f5a3c8..4e346391 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -172,9 +172,9 @@ module.exports = function (grunt) {
files: [
{
expand: true,
- flatten: true,
- src: ['css/vendor/font-awesome/*', '!**/*.css'],
- dest: 'dist/css/'
+ flatten: false,
+ src: ['css/vendor/font-awesome/*'],
+ dest: 'dist/'
}
]
diff --git a/appinfo/info.xml b/appinfo/info.xml
index 30ae7156..02b37cd0 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -18,7 +18,7 @@ For an demo of this app visit [https://demo.passman.cc](https://demo.passman.cc)
]]>
AGPL
- 2.1.1
+ 2.1.2
Sander Brand
Marcos Zuriaga
Passman
diff --git a/controller/internalcontroller.php b/controller/internalcontroller.php
index 7e7bfa07..6b92c698 100644
--- a/controller/internalcontroller.php
+++ b/controller/internalcontroller.php
@@ -90,7 +90,9 @@ class InternalController extends ApiController {
* @NoAdminRequired
*/
public function generatePerson() {
- $random_person = json_decode(file_get_contents('http://api.namefake.com/'));
+ $context = [ 'http' => [ 'method' => 'GET' ], 'ssl' => [ 'verify_peer' => false, 'allow_self_signed'=> true ] ];
+ $context = stream_context_create($context);
+ $random_person = json_decode(file_get_contents('http://api.namefake.com/', false, $context));
return new JSONResponse($random_person);
}
diff --git a/controller/translationcontroller.php b/controller/translationcontroller.php
index ecd862de..7bb75162 100644
--- a/controller/translationcontroller.php
+++ b/controller/translationcontroller.php
@@ -79,14 +79,14 @@ class TranslationController extends ApiController {
'import.importing' => $this->trans->t('Importing'),
'import.start' => $this->trans->t('Start import'),
- 'select.csv' => $this->trans->t('Select csv file'),
- 'parsed.csv.rows' => $this->trans->t('Parsed {{rows}} lines from csv file'),
+ 'select.csv' => $this->trans->t('Select CSV file'),
+ 'parsed.csv.rows' => $this->trans->t('Parsed {{rows}} lines from CSV file'),
'skip.first.row' => $this->trans->t('Skip first row'),
'import.csv.label.req' => $this->trans->t('You need to assign the label field before you can start the import.'),
- 'first.five.lines' => $this->trans->t('First 5 lines of the csv are shown.'),
+ 'first.five.lines' => $this->trans->t('First 5 lines of the CSV are shown.'),
'assign.column' => $this->trans->t('Assign the proper fields to each column.'),
'example.credential' => $this->trans->t('Example imported credential'),
- 'missing.importer' => $this->trans->t('Missing an importer? Try it with the generic csv importer.'),
+ 'missing.importer' => $this->trans->t('Missing an importer? Try it with the generic CSV importer.'),
'missing.importer.back' => $this->trans->t('Go back to importers.'),
@@ -233,10 +233,11 @@ class TranslationController extends ApiController {
'generating.keys' => $this->trans->t('Generating sharing keys'),
// templates/views/partials/forms/settings/tool.html
- 'tool.intro' => $this->trans->t('The password tool will scan your password, calculate the avarage crack time and, if below the threshold, show them'),
+ 'tool.intro' => $this->trans->t('The password tool will scan your password, calculate the average crack time and list those which are below the threshold'),
'min.strength' => $this->trans->t('Minimum password stength'),
- 'scan.result.msg' => $this->trans->t('Passman scanned your passwords, and here is the result.'),
- 'scan.result' => $this->trans->t('A total of {{scan_result}} weak credentials.'),
+ 'scan.start' => $this->trans->t('Start scan'),
+ 'scan.result.msg' => $this->trans->t('Result'),
+ 'scan.result' => $this->trans->t('A total of {{scan_result}} weak credentials were found.'),
'score' => $this->trans->t('Score'),
'action' => $this->trans->t('Action'),
@@ -360,15 +361,15 @@ class TranslationController extends ApiController {
'go.back.vaults' => $this->trans->t('Go back to vaults'),
'input.vault.password' => $this->trans->t('Please input the password for'),
'vault.default' => $this->trans->t('Set this vault as default.'),
- 'vault.auto.login' => $this->trans->t('Login automatically to this vault.'),
+ 'vault.auto.login' => $this->trans->t('Log into this vault automatically.'),
'auto.logout' => $this->trans->t('Logout of this vault automatically after: '),
'vault.decrypt' => $this->trans->t('Decrypt vault'),
'req.intro1' => $this->trans->t('Seems you lost the vault password and you\'re unable to login.'),
- 'req.intro2' => $this->trans->t('If you want this vault removed you can request removal of the vault here.'),
- 'req.intro3' => $this->trans->t('An admin then accept to the request (or not)'),
+ 'req.intro2' => $this->trans->t('If you want this vault to be removed you can request that here.'),
+ 'req.intro3' => $this->trans->t('An admin then accepts to the request (or not)'),
- 'request.deletion.warning' => $this->trans->t('After an admin destroy\'s this vault, all credentials will be lost'),
+ 'request.deletion.warning' => $this->trans->t('After an admin destroys this vault, all credentials inside will be lost'),
'request.deletion.reason' => $this->trans->t('Reason to request deletion (optional):'),
'request.deletion' => $this->trans->t('Request vault destruction'),
'request.deletion.accept' => $this->trans->t('Yes, request an admin to destroy this vault'),
diff --git a/img/app.svg b/img/app.svg
index 89d40a0e..637cc61d 100644
--- a/img/app.svg
+++ b/img/app.svg
@@ -1 +1,12 @@
-
\ No newline at end of file
+
+
+
+
+
+
+
+
diff --git a/js/app/controllers/edit_credential.js b/js/app/controllers/edit_credential.js
index f084b24e..35f4dd5a 100644
--- a/js/app/controllers/edit_credential.js
+++ b/js/app/controllers/edit_credential.js
@@ -300,6 +300,11 @@
}
+ if ($scope.storedCredential.password !== $scope.storedCredential.password_repeat){
+ NotificationService.showNotification($translate.instant('password.do.not.match'), 5000);
+ return;
+ }
+
//@TODO validation
//@TODO When credential is expired and has renew interval set, calc new expire time.
delete $scope.storedCredential.password_repeat;
diff --git a/js/app/controllers/generic-csv-importer.js b/js/app/controllers/generic-csv-importer.js
index 6c2162bb..8f4a9550 100644
--- a/js/app/controllers/generic-csv-importer.js
+++ b/js/app/controllers/generic-csv-importer.js
@@ -192,7 +192,7 @@
};
$scope.importing = false;
- $scope.startImport = function () {
+ $scope.startCSVImport = function () {
$scope.importing = true;
$scope.log = [];
var start = ($scope.skipFirstRow) ? 1 : 0;
diff --git a/js/exporters/exporter-csv.js b/js/exporters/exporter-csv.js
index 90a15b0b..99494943 100644
--- a/js/exporters/exporter-csv.js
+++ b/js/exporters/exporter-csv.js
@@ -34,7 +34,7 @@ PassmanExporter.csv.export = function (credentials) {
/** global: C_Promise */
return new C_Promise(function () {
var _this = this;
- var headers = ['label', 'username', 'password', 'email', 'description', 'tags'];
+ var headers = ['label', 'username', 'password', 'email', 'description', 'tags', 'url'];
var file_data = '"' + headers.join('","') + '"\n';
for (var i = 0; i < credentials.length; i++) {
var _credential = credentials[i];
diff --git a/js/templates.js b/js/templates.js
index 41216c17..f97e8d4b 100644
--- a/js/templates.js
+++ b/js/templates.js
@@ -63,7 +63,7 @@ angular.module('views/partials/forms/settings/general_settings.html', []).run(['
angular.module('views/partials/forms/settings/generic_csv_import.html', []).run(['$templateCache', function ($templateCache) {
'use strict';
$templateCache.put('views/partials/forms/settings/generic_csv_import.html',
- '
{{ \'select.csv\' | translate}}
{{ \'skip.first.row\' | translate}}
{{ \'import.csv.label.req\' | translate}}
{{ (importing) ? (\'import.importing\' | translate) : (\'import.start\' | translate) }}
{{ \'upload.progress\' | translate}}
{{ \'first.five.lines\' | translate }} {{ \'assign.column\' | translate }}
{{ \'example.credential\' | translate}}
');
+ '{{ \'select.csv\' | translate}}
{{ \'skip.first.row\' | translate}}
{{ \'import.csv.label.req\' | translate}}
{{ (importing) ? (\'import.importing\' | translate) : (\'import.start\' | translate) }}
{{ \'upload.progress\' | translate}}
{{ \'first.five.lines\' | translate }} {{ \'assign.column\' | translate }}
{{ \'example.credential\' | translate}}
');
}]);
angular.module('views/partials/forms/settings/import.html', []).run(['$templateCache', function ($templateCache) {
diff --git a/phpunit.xml b/phpunit.xml
index e33ce95e..81137a1d 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -2,11 +2,11 @@
./tests/unit
+ ./tests/unit/lib/Db
- ./lib/Db
./lib/Utility
./lib/BackgroundJob
./controller
@@ -17,5 +17,6 @@
+
\ No newline at end of file
diff --git a/templates/part.admin.php b/templates/part.admin.php
index 945441fb..2d728665 100644
--- a/templates/part.admin.php
+++ b/templates/part.admin.php
@@ -53,7 +53,7 @@ $ciphers = openssl_get_cipher_methods();
Local version:
t('A newer version of passman is available'));
+ p($l->t('A newer version of Passman is available'));
}
?>
@@ -102,7 +102,7 @@ $ciphers = openssl_get_cipher_methods();
id="passman_disable_debugger" class="checkbox"
value="0"/>
- t('Disable javascript debugger')); ?>
+ t('Disable JavaScript debugger')); ?>
diff --git a/templates/views/partials/forms/settings/generic_csv_import.html b/templates/views/partials/forms/settings/generic_csv_import.html
index 3dfa1ab9..488f74f7 100644
--- a/templates/views/partials/forms/settings/generic_csv_import.html
+++ b/templates/views/partials/forms/settings/generic_csv_import.html
@@ -17,7 +17,7 @@
{{ 'import.csv.label.req' | translate}}
- {{ (importing) ? ('import.importing' | translate) : ('import.start' | translate) }}
+ {{ (importing) ? ('import.importing' | translate) : ('import.start' | translate) }}
@@ -36,11 +36,11 @@
secret="'true'">
-
+
-
\ No newline at end of file
+
diff --git a/templates/views/show_vault.html b/templates/views/show_vault.html
index 578b1e5f..a905f234 100644
--- a/templates/views/show_vault.html
+++ b/templates/views/show_vault.html
@@ -136,8 +136,7 @@