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}}
{{ \'upload.progress\' | translate}}
{{ \'first.five.lines\' | translate }}
{{ \'assign.column\' | translate }}
{{line[$index]}}
{{ \'example.credential\' | translate}}
'); + '
{{ \'select.csv\' | translate}}
{{ \'skip.first.row\' | translate}}
{{ \'import.csv.label.req\' | translate}}
{{ \'upload.progress\' | translate}}
{{ \'first.five.lines\' | translate }}
{{ \'assign.column\' | translate }}
{{line[$index]}}
{{ \'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"/>

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}}

- +
diff --git a/templates/views/partials/forms/settings/tool.html b/templates/views/partials/forms/settings/tool.html index d407fa62..64f1e027 100644 --- a/templates/views/partials/forms/settings/tool.html +++ b/templates/views/partials/forms/settings/tool.html @@ -5,7 +5,7 @@
{{ 'min.strength' | 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 @@