From 64113510686357efe5bb1a88e15e121a02912ed0 Mon Sep 17 00:00:00 2001 From: brantje Date: Sat, 1 Oct 2016 17:21:24 +0200 Subject: [PATCH 1/5] Add bookmarklet --- Gruntfile.js | 7 + appinfo/routes.php | 1 + controller/pagecontroller.php | 8 + css/app.css | 2 +- css/bookmarklet.css | 35 ++ css/bookmarklet.css.map | 7 + js/app/app.js | 32 +- js/app/controllers/bookmarklet.js | 360 ++++++++++++++++++ js/app/controllers/settings.js | 7 +- js/templates.js | 4 +- sass/bookmarklet.scss | 41 ++ sass/partials/tabs.scss | 2 +- templates/bookmarklet.php | 101 +++++ .../forms/edit_credential/password.html | 2 +- .../forms/settings/general_settings.html | 23 +- 15 files changed, 604 insertions(+), 28 deletions(-) create mode 100644 css/bookmarklet.css create mode 100644 css/bookmarklet.css.map create mode 100644 js/app/controllers/bookmarklet.js create mode 100644 sass/bookmarklet.scss create mode 100644 templates/bookmarklet.php diff --git a/Gruntfile.js b/Gruntfile.js index 1ed5cbc1..cd58cf62 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -35,6 +35,13 @@ module.exports = function (grunt) { src: ["**/app.scss"], dest: "css", ext: ".css" + }, + { + expand: true, + cwd: "sass", + src: ["**/bookmarklet.scss"], + dest: "css", + ext: ".css" } ] } diff --git a/appinfo/routes.php b/appinfo/routes.php index e99b9d01..f9382742 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -20,6 +20,7 @@ return [ 'routes' => [ ['name' => 'page#index', 'url' => '/', 'verb' => 'GET'], + ['name' => 'page#bookmarklet', 'url' => '/bookmarklet', 'verb' => 'GET'], //Vault ['name' => 'vault#listVaults', 'url' => '/api/v2/vaults', 'verb' => 'GET'], diff --git a/controller/pagecontroller.php b/controller/pagecontroller.php index fd0c401d..1520cd02 100644 --- a/controller/pagecontroller.php +++ b/controller/pagecontroller.php @@ -42,5 +42,13 @@ class PageController extends Controller { } + /** + * @NoAdminRequired + * @NoCSRFRequired + */ + public function bookmarklet($url='',$title='') { + $params = array('url' => $url, 'label' => $title); + return new TemplateResponse('passman', 'bookmarklet', $params); + } } \ No newline at end of file diff --git a/css/app.css b/css/app.css index c4eb0412..94d8af04 100644 --- a/css/app.css +++ b/css/app.css @@ -33,7 +33,7 @@ border-bottom-width: 0; margin: 0; padding: 10px 10px 10px 10px; - color: #696969; + color: #e0dddd; cursor: pointer; border-right: 1px solid #eee; -webkit-transition: background-color 250ms linear; diff --git a/css/bookmarklet.css b/css/bookmarklet.css new file mode 100644 index 00000000..89e245d2 --- /dev/null +++ b/css/bookmarklet.css @@ -0,0 +1,35 @@ +header, nav { + display: none; } + +#content-wrapper { + padding-top: 0; } + +#app-content-wrapper { + min-height: inherit !important; } + +.warning_bar .fa-times { + margin-right: 20px; } + +.tab_container { + padding-top: 10px; + margin-bottom: 20px; } + .tab_container div { + margin-bottom: 5px; + overflow: hidden; } + +.vault_wrapper { + margin-top: 70px; } + +.active_vault { + float: right; + text-align: right; + padding-right: 5px; + font-size: 10px; } + +.tab_header { + margin: 0; } + +.angularjs-datetime-picker { + z-index: 9999; } + +/*# sourceMappingURL=bookmarklet.css.map */ diff --git a/css/bookmarklet.css.map b/css/bookmarklet.css.map new file mode 100644 index 00000000..029063ad --- /dev/null +++ b/css/bookmarklet.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AAAA,WAAW;EACT,OAAO,EAAE,IAAI;;AAKf,gBAAgB;EACd,WAAW,EAAE,CAAC;;AAIhB,oBAAoB;EAClB,UAAU,EAAE,kBAAkB;;AAGhC,sBAAuB;EACtB,YAAY,EAAE,IAAI;;AAEnB,cAAc;EACZ,WAAW,EAAE,IAAI;EAKjB,aAAa,EAAE,IAAI;EAJnB,kBAAG;IACD,aAAa,EAAE,GAAG;IAClB,QAAQ,EAAE,MAAM;;AAIpB,cAAc;EACZ,UAAU,EAAE,IAAI;;AAElB,aAAa;EACX,KAAK,EAAE,KAAK;EACZ,UAAU,EAAE,KAAK;EACjB,aAAa,EAAE,GAAG;EAClB,SAAS,EAAE,IAAI;;AAEjB,WAAW;EACT,MAAM,EAAE,CAAC;;AAEX,0BAA0B;EACxB,OAAO,EAAE,IAAI", +"sources": ["../sass/bookmarklet.scss"], +"names": [], +"file": "bookmarklet.css" +} diff --git a/js/app/app.js b/js/app/app.js index bd9ef8b6..8e677a9e 100644 --- a/js/app/app.js +++ b/js/app/app.js @@ -94,23 +94,25 @@ jQuery(document).ready(function () { if($('#controls').length) { var controlsWidth; // if there is a scrollbar … - if($('#app-content').get(0).scrollHeight > $('#app-content').height()) { - if($(window).width() > 768) { - controlsWidth = $('#content').width() - $('#app-navigation').width() - OC.Util.getScrollBarWidth(); - if (!$('#app-sidebar').hasClass('hidden') && !$('#app-sidebar').hasClass('disappear')) { - controlsWidth -= $('#app-sidebar').width(); + if($('#app-content').get(0)) { + if ($('#app-content').get(0).scrollHeight > $('#app-content').height()) { + if ($(window).width() > 768) { + controlsWidth = $('#content').width() - $('#app-navigation').width() - OC.Util.getScrollBarWidth(); + if (!$('#app-sidebar').hasClass('hidden') && !$('#app-sidebar').hasClass('disappear')) { + controlsWidth -= $('#app-sidebar').width(); + } + } else { + controlsWidth = $('#content').width() - OC.Util.getScrollBarWidth(); } - } else { - controlsWidth = $('#content').width() - OC.Util.getScrollBarWidth(); - } - } else { // if there is none - if($(window).width() > 768) { - controlsWidth = $('#content').width() - $('#app-navigation').width(); - if (!$('#app-sidebar').hasClass('hidden') && !$('#app-sidebar').hasClass('disappear')) { - //controlsWidth -= $('#app-sidebar').width(); + } else { // if there is none + if ($(window).width() > 768) { + controlsWidth = $('#content').width() - $('#app-navigation').width(); + if (!$('#app-sidebar').hasClass('hidden') && !$('#app-sidebar').hasClass('disappear')) { + //controlsWidth -= $('#app-sidebar').width(); + } + } else { + controlsWidth = $('#content').width(); } - } else { - controlsWidth = $('#content').width(); } } if(r){ diff --git a/js/app/controllers/bookmarklet.js b/js/app/controllers/bookmarklet.js new file mode 100644 index 00000000..780bd9ae --- /dev/null +++ b/js/app/controllers/bookmarklet.js @@ -0,0 +1,360 @@ +'use strict'; + +/** + * @ngdoc function + * @name passmanApp.controller:MainCtrl + * @description + * # MainCtrl + * Controller of the passmanApp + */ +angular.module('passmanApp') + .controller('BookmarkletCtrl', ['$scope', '$rootScope', '$location', 'VaultService', 'CredentialService', 'SettingsService', 'NotificationService', 'EncryptService', 'TagService', 'FileService', + function ($scope, $rootScope, $location, VaultService, CredentialService, SettingsService, NotificationService, EncryptService, TagService, FileService) { + $scope.active_vault = false; + + $scope.http_warning_hidden = true; + if ($location.$$protocol === 'http') { + $scope.using_http = true; + //$scope.http_warning_hidden = false; + + } + + $scope.logout = function () { + $scope.active_vault = false; + }; + if (SettingsService.getSetting('defaultVault') && SettingsService.getSetting('defaultVaultPass')) { + var _vault = angular.copy(SettingsService.getSetting('defaultVault')); + VaultService.getVault(_vault).then(function (vault) { + vault.vaultKey = angular.copy(SettingsService.getSetting('defaultVaultPass')); + VaultService.setActiveVault(vault); + $scope.active_vault = vault; + + $scope.pwSettings = VaultService.getVaultSetting('pwSettings', + { + 'length': 12, + 'useUppercase': true, + 'useLowercase': true, + 'useDigits': true, + 'useSpecialChars': true, + 'minimumDigitCount': 3, + 'avoidAmbiguousCharacters': false, + 'requireEveryCharType': true, + 'generateOnCreate': true + }) + }) + } + /** + * Vault selection stuff + */ + VaultService.getVaults().then(function (vaults) { + $scope.vaults = vaults; + + }); + $scope.default_vault = false; + $scope.remember_vault_password = false; + $scope.list_selected_vault = false; + + + $scope.toggleDefaultVault = function () { + $scope.default_vault = !$scope.default_vault; + if ($scope.default_vault == true) { + SettingsService.setSetting('defaultVault', $scope.list_selected_vault); + } else { + SettingsService.setSetting('defaultVault', null); + } + }; + + $scope.toggleRememberPassword = function () { + $scope.remember_vault_password = !$scope.remember_vault_password; + if ($scope.remember_vault_password) { + SettingsService.setSetting('defaultVault', $scope.list_selected_vault); + $scope.default_vault = true; + } + if ($scope.remember_vault_password != true) { + SettingsService.setSetting('defaultVault', null); + } + }; + + $scope.clearState = function () { + $scope.list_selected_vault = false; + $scope.creating_vault = false; + $scope.error = false; + }; + + $scope.selectVault = function (vault) { + $scope.list_selected_vault = vault; + }; + $scope.sharing_keys = {}; + $scope.newVault = function () { + $scope.creating_vault = true; + var _vault = {}; + var key_size = 1024; + ShareService.generateRSAKeys(key_size).progress(function (progress) { + var p = progress > 0 ? 2 : 1; + $scope.creating_keys = 'Generating sharing keys (' + p + ' / 2)'; + $scope.$digest(); + }).then(function (kp) { + var pem = ShareService.rsaKeyPairToPEM(kp); + $scope.creating_keys = false; + $scope.sharing_keys.private_sharing_key = pem.privateKey; + $scope.sharing_keys.public_sharing_key = pem.publicKey; + $scope.$digest(); + }); + + }; + + var _loginToVault = function (vault, vault_key) { + var _vault = angular.copy(vault); + _vault.vaultKey = angular.copy(vault_key); + delete _vault.credentials; + $scope.active_vault = _vault; + + }; + + $scope.vaultDecryptionKey = ''; + $scope.loginToVault = function (vault, vault_key) { + $scope.error = false; + var _vault = angular.copy(vault); + _vault.vaultKey = angular.copy(vault_key); + + VaultService.setActiveVault(_vault); + try { + var c = EncryptService.decryptString(vault.challenge_password); + if ($scope.remember_vault_password) { + SettingsService.setSetting('defaultVaultPass', vault_key); + } + _loginToVault(vault, vault_key); + + } catch (e) { + $scope.error = 'Incorrect vault password!' + } + + }; + + + $scope.createVault = function (vault_name, vault_key, vault_key2) { + if (vault_key != vault_key2) { + $scope.error = 'Passwords do not match'; + return; + } + VaultService.createVault(vault_name).then(function (vault) { + $scope.vaults.push(vault); + var _vault = angular.copy(vault); + _vault.vaultKey = angular.copy(vault_key); + VaultService.setActiveVault(_vault); + var test_credential = CredentialService.newCredential(); + test_credential.label = 'Test key for vault ' + vault_name; + test_credential.hidden = true; + test_credential.vault_id = vault.vault_id; + test_credential.password = 'lorum ipsum'; + CredentialService.createCredential(test_credential).then(function (result) { + _vault.public_sharing_key = angular.copy($scope.sharing_keys.public_sharing_key); + _vault.private_sharing_key = EncryptService.encryptString(angular.copy($scope.sharing_keys.private_sharing_key)); + VaultService.updateSharingKeys(_vault).then(function (result) { + _loginToVault(vault, vault_key); + }) + }) + }); + }; + + + /** + * End vault selection stiff + */ + $scope.storedCredential = CredentialService.newCredential(); + + var QueryString = function () { + // This function is anonymous, is executed immediately and + // the return value is assigned to QueryString! + var query_string = {}; + var query = window.location.search.substring(1); + var vars = query.split("&"); + for (var i = 0; i < vars.length; i++) { + var pair = vars[i].split("="); + // If first entry with this name + if (typeof query_string[pair[0]] === "undefined") { + query_string[pair[0]] = decodeURIComponent(pair[1]); + // If second entry with this name + } else if (typeof query_string[pair[0]] === "string") { + var arr = [query_string[pair[0]], decodeURIComponent(pair[1])]; + query_string[pair[0]] = arr; + // If third or later entry with this name + } else { + query_string[pair[0]].push(decodeURIComponent(pair[1])); + } + } + return query_string; + }(); + var query_string = QueryString; + $scope.storedCredential.label = query_string.title + $scope.storedCredential.url = query_string.url + + $scope.setHttpWarning = function (state) { + $scope.http_warning_hidden = state; + }; + + $scope.currentTab = { + title: 'General', + url: 'views/partials/forms/edit_credential/basics.html', + color: 'blue' + }; + + $scope.tabs = [{ + title: 'General', + url: 'views/partials/forms/edit_credential/basics.html', + color: 'blue' + }, { + title: 'Password', + url: 'views/partials/forms/edit_credential/password.html', + color: 'green' + }, { + title: 'Custom fields', + url: 'views/partials/forms/edit_credential/custom_fields.html', + color: 'orange' + }, { + title: 'Files', + url: 'views/partials/forms/edit_credential/files.html', + color: 'yellow' + }, { + title: 'OTP', + url: 'views/partials/forms/edit_credential/otp.html', + color: 'purple' + }]; + + + $scope.getTags = function ($query) { + return TagService.searchTag($query); + }; + + $scope.currentTab = { + title: 'General', + url: 'views/partials/forms/edit_credential/basics.html', + color: 'blue' + }; + + $scope.onClickTab = function (tab) { + $scope.currentTab = tab; + }; + + $scope.isActiveTab = function (tab) { + return tab.url == $scope.currentTab.url; + }; + + /** + * Below general edit functions + */ + + $scope.pwGenerated = function (pass) { + $scope.storedCredential.password_repeat = pass; + }; + + var _customField = { + label: '', + value: '', + secret: false + }; + $scope.new_custom_field = angular.copy(_customField); + + $scope.addCustomField = function () { + if (!$scope.new_custom_field.label) { + NotificationService.showNotification('Please fill in a label', 3000); + } + if (!$scope.new_custom_field.value) { + NotificationService.showNotification('Please fill in a value!', 3000); + } + if (!$scope.new_custom_field.label || !$scope.new_custom_field.value) { + return; + } + $scope.storedCredential.custom_fields.push(angular.copy($scope.new_custom_field)); + $scope.new_custom_field = angular.copy(_customField); + }; + + $scope.deleteCustomField = function (field) { + var idx = $scope.storedCredential.custom_fields.indexOf(field); + $scope.storedCredential.custom_fields.splice(idx, 1); + }; + + $scope.new_file = { + name: '', + data: null + }; + + $scope.deleteFile = function (file) { + var idx = $scope.storedCredential.files.indexOf(file); + FileService.deleteFile(file).then(function () { + $scope.storedCredential.files.splice(idx, 1); + }); + }; + + $scope.fileLoaded = function (file) { + var _file = { + filename: file.name, + size: file.size, + mimetype: file.type, + data: file.data + }; + FileService.uploadFile(_file).then(function (result) { + delete result.file_data; + result.filename = EncryptService.decryptString(result.filename); + $scope.storedCredential.files.push(result); + }); + + + $scope.$digest() + }; + + $scope.fileLoadError = function (error, file) { + console.log(error, file) + }; + + $scope.selected_file = ''; + $scope.fileprogress = []; + $scope.fileSelectProgress = function (progress) { + if (progress) { + $scope.fileprogress = progress; + $scope.$digest() + + } + }; + $scope.renewIntervalValue = 0; + $scope.renewIntervalModifier = '0'; + + $scope.updateInterval = function (renewIntervalValue, renewIntervalModifier) { + var value = parseInt(renewIntervalValue); + var modifier = parseInt(renewIntervalModifier); + if (value && modifier) { + $scope.storedCredential.renew_interval = value * modifier; + } + }; + + $scope.parseQR = function (QRCode) { + var re = /otpauth:\/\/(totp|hotp)\/(.*)\?(secret|issuer)=(.*)&(issuer|secret)=(.*)/, parsedQR, qrInfo; + parsedQR = (QRCode.qrData.match(re)); + if (parsedQR) + qrInfo = { + type: parsedQR[1], + label: decodeURIComponent(parsedQR[2]), + qr_uri: QRCode + }; + qrInfo[parsedQR[3]] = parsedQR[4]; + qrInfo[parsedQR[5]] = parsedQR[6]; + $scope.storedCredential.otp = qrInfo; + $scope.$digest() + }; + + + $scope.saveCredential = function () { + //@TODO validation + delete $scope.storedCredential.password_repeat; + if (!$scope.storedCredential.credential_id) { + $scope.storedCredential.vault_id = $scope.active_vault.vault_id; + + CredentialService.createCredential($scope.storedCredential).then(function (result) { + NotificationService.showNotification('Credential created!', 5000) + }) + } + }; + + } + ]); + diff --git a/js/app/controllers/settings.js b/js/app/controllers/settings.js index 5ceeff83..519e6b40 100644 --- a/js/app/controllers/settings.js +++ b/js/app/controllers/settings.js @@ -8,8 +8,8 @@ * Controller of the passmanApp */ angular.module('passmanApp') - .controller('SettingsCtrl', ['$scope', '$rootScope', 'SettingsService', 'VaultService', 'CredentialService', '$location', '$routeParams', '$http', 'EncryptService','NotificationService', - function ($scope, $rootScope, SettingsService, VaultService, CredentialService, $location, $routeParams, $http, EncryptService, NotificationService) { + .controller('SettingsCtrl', ['$scope', '$rootScope', 'SettingsService', 'VaultService', 'CredentialService', '$location', '$routeParams', '$http', 'EncryptService','NotificationService','$sce', + function ($scope, $rootScope, SettingsService, VaultService, CredentialService, $location, $routeParams, $http, EncryptService, NotificationService, $sce) { $scope.vault_settings = {}; $scope.new_vault_name = ''; $scope.active_vault = VaultService.getActiveVault(); @@ -41,6 +41,9 @@ angular.module('passmanApp') }) } } + var http = location.protocol, slashes = http.concat("//"), host = slashes.concat(window.location.hostname), complete = host + location.pathname; + $scope.bookmarklet = $sce.trustAsHtml("Save in passman"); + $scope.saveVaultSettings = function () { diff --git a/js/templates.js b/js/templates.js index feb30de6..1058e9d1 100644 --- a/js/templates.js +++ b/js/templates.js @@ -39,7 +39,7 @@ angular.module('views/partials/forms/edit_credential/otp.html', []).run(['$templ angular.module('views/partials/forms/edit_credential/password.html', []).run(['$templateCache', function($templateCache) { 'use strict'; $templateCache.put('views/partials/forms/edit_credential/password.html', - '
No expire date set {{ storedCredential.expire_time | date:\'dd-MM-yyyy @ HH:mm:ss\'}}
Password generation settings
'); + '
No expire date set {{ storedCredential.expire_time | date:\'dd-MM-yyyy @ HH:mm:ss\'}}
Password generation settings
'); }]); angular.module('views/partials/forms/settings/export.html', []).run(['$templateCache', function($templateCache) { @@ -51,7 +51,7 @@ angular.module('views/partials/forms/settings/export.html', []).run(['$templateC angular.module('views/partials/forms/settings/general_settings.html', []).run(['$templateCache', function($templateCache) { 'use strict'; $templateCache.put('views/partials/forms/settings/general_settings.html', - '

Rename vault

Change vault key

About passman

Version: {{passman_version}}
Bla bla about passman, changelog.
Donate to support development

'); + '

Rename vault

Change vault key

About passman

Version: {{passman_version}}
Bla bla about passman, changelog.
Donate to support development

Bookmarklet

Save your passwords with 1 click!
Drag below button to your bookmark toolbar.

'); }]); angular.module('views/partials/forms/settings/import.html', []).run(['$templateCache', function($templateCache) { diff --git a/sass/bookmarklet.scss b/sass/bookmarklet.scss new file mode 100644 index 00000000..65b25237 --- /dev/null +++ b/sass/bookmarklet.scss @@ -0,0 +1,41 @@ +header, nav{ + display: none; +} +#content{ + +} +#content-wrapper{ + padding-top: 0; + +} + +#app-content-wrapper{ + min-height: inherit !important; +} + +.warning_bar .fa-times { + margin-right: 20px; +} +.tab_container{ + padding-top: 10px; + div{ + margin-bottom: 5px; + overflow: hidden; + } + margin-bottom: 20px; +} +.vault_wrapper{ + margin-top: 70px; +} +.active_vault{ + float: right; + text-align: right; + padding-right: 5px; + font-size: 10px; +} +.tab_header{ + margin: 0; +} +.angularjs-datetime-picker{ + z-index: 9999; +} \ No newline at end of file diff --git a/sass/partials/tabs.scss b/sass/partials/tabs.scss index c04b87db..1286e2f5 100644 --- a/sass/partials/tabs.scss +++ b/sass/partials/tabs.scss @@ -11,7 +11,7 @@ border-bottom-width: 0; margin: 0; padding: 10px 10px 10px 10px; - color: #696969; + color: #e0dddd; cursor: pointer; border-right: 1px solid #eee; -webkit-transition: background-color 250ms linear; diff --git a/templates/bookmarklet.php b/templates/bookmarklet.php new file mode 100644 index 00000000..6bae81b8 --- /dev/null +++ b/templates/bookmarklet.php @@ -0,0 +1,101 @@ + + +
+
+ Warning! Adding credentials over http can be insecure! + +
+
+
+
+
+
+
+ Logged in to {{active_vault.name}}
+ Change vault +
+
    +
  • {{tab.title}} +
  • +
+ +
+
+ + +
+
+
+
\ No newline at end of file diff --git a/templates/views/partials/forms/edit_credential/password.html b/templates/views/partials/forms/edit_credential/password.html index e9291744..b9576c37 100644 --- a/templates/views/partials/forms/edit_credential/password.html +++ b/templates/views/partials/forms/edit_credential/password.html @@ -38,7 +38,7 @@
- Password generation settings + Password generation settings
diff --git a/templates/views/partials/forms/settings/general_settings.html b/templates/views/partials/forms/settings/general_settings.html index 5522324d..2ba51a0c 100644 --- a/templates/views/partials/forms/settings/general_settings.html +++ b/templates/views/partials/forms/settings/general_settings.html @@ -3,7 +3,9 @@

Rename vault

- +

Change vault key

@@ -11,19 +13,28 @@ + > - +

About passman

- Version: {{passman_version}}
+ Version: {{passman_version}}
Bla bla about passman, changelog. -
- Donate to support development +
+ Donate to support + development

+

Bookmarklet

+

Save your passwords with 1 click!
Drag below button to your + bookmark toolbar.

+
+

\ No newline at end of file From 9e8b23679c48a157dc2f0bcd19a6de05bfb2fcac Mon Sep 17 00:00:00 2001 From: brantje Date: Sat, 1 Oct 2016 17:52:53 +0200 Subject: [PATCH 2/5] More loggin for the cron, less strict checking --- lib/Service/CronService.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/Service/CronService.php b/lib/Service/CronService.php index d599a5ab..8b5b246a 100644 --- a/lib/Service/CronService.php +++ b/lib/Service/CronService.php @@ -42,14 +42,20 @@ class CronService { $sql = 'SELECT count(*) as rows from `*PREFIX*notifications` WHERE `subject`= \'credential_expired\' AND object_id=?'; $query = $this->db->prepareQuery($sql); - $query->bindParam(1, $credential->getId(), \PDO::PARAM_INT); + $id = $credential->getId(); + $query->bindParam(1, $id, \PDO::PARAM_INT); $result = $query->execute(); - if($result->fetchRow()['rows'] === 0) { + $this->logger->debug($credential->getLabel() .' is expired, checking notifications!', array('app' => 'passman')); + if($result->fetchRow()['rows'] == 0) { + $this->logger->debug($credential->getLabel() .' is expired, adding notification!', array('app' => 'passman')); + $this->activityService->add( Activity::SUBJECT_ITEM_EXPIRED, array($credential->getLabel(), $credential->getUserId()), '', array(), $link, $credential->getUserId(), Activity::TYPE_ITEM_EXPIRED); $this->notificationService->credentialExpiredNotification($credential); + } else { + $this->logger->debug($credential->getLabel() .' is expired, already notified!', array('app' => 'passman')); } } From 03a90e9020428dea6758807c9f8b405dabb238bf Mon Sep 17 00:00:00 2001 From: brantje Date: Sat, 1 Oct 2016 17:53:32 +0200 Subject: [PATCH 3/5] Fix action title --- css/app.css | 2 +- sass/credentials.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/css/app.css b/css/app.css index 94d8af04..d7ebce42 100644 --- a/css/app.css +++ b/css/app.css @@ -160,7 +160,7 @@ #app-content #app-content-wrapper #passman-controls { border-bottom: 1px solid #c9c9c9; } #app-content #app-content-wrapper .title { - width: calc(100% - 375px); + width: calc(100% - 380px); text-align: center; display: inline-block; font-weight: bold; diff --git a/sass/credentials.scss b/sass/credentials.scss index 4204f4fd..f37e9c1a 100644 --- a/sass/credentials.scss +++ b/sass/credentials.scss @@ -6,7 +6,7 @@ border-bottom: 1px solid #c9c9c9 } .title { - width: calc(100% - 375px); + width: calc(100% - 380px); text-align: center; display: inline-block; font-weight: bold; From 1048365e95dd1391ceab4a41d46c56b45464fcdb Mon Sep 17 00:00:00 2001 From: brantje Date: Sat, 1 Oct 2016 18:04:29 +0200 Subject: [PATCH 4/5] Fix "only variables should be passed by reference" --- lib/Service/CredentialService.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/Service/CredentialService.php b/lib/Service/CredentialService.php index 9dbf8f33..e30f3d67 100644 --- a/lib/Service/CredentialService.php +++ b/lib/Service/CredentialService.php @@ -45,7 +45,8 @@ class CredentialService { } public function getRandomCredentialByVaultId($vault_id, $user_id) { - return array_pop($this->credentialMapper->getRandomCredentialByVaultId($vault_id, $user_id)); + $credentials = $this->credentialMapper->getRandomCredentialByVaultId($vault_id, $user_id); + return array_pop($credentials); } public function getExpiredCredentials($timestamp) { From 3dc19d2371b94ea93f48bb0af2c562d53636131b Mon Sep 17 00:00:00 2001 From: brantje Date: Sat, 1 Oct 2016 18:07:44 +0200 Subject: [PATCH 5/5] Change warning bar z-index --- css/app.css | 2 +- css/app.css.map | 2 +- sass/vaults.scss | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/css/app.css b/css/app.css index d7ebce42..2eaa72b9 100644 --- a/css/app.css +++ b/css/app.css @@ -98,7 +98,7 @@ padding: 12px; font-weight: bold; text-align: center; - z-index: 9999; + z-index: 800; background-color: red; color: white; } .warning_bar .fa-times { diff --git a/css/app.css.map b/css/app.css.map index 56715b7e..c1fc4ae6 100644 --- a/css/app.css.map +++ b/css/app.css.map @@ -1,6 +1,6 @@ { "version": 3, -"mappings": "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", +"mappings": "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", "sources": ["../sass/partials/button.scss","../sass/partials/tabs.scss","../sass/partials/pwgen.scss","../sass/mixins.scss","../sass/vaults.scss","../sass/credentials.scss","../sass/menu.scss","../sass/share_credential.scss","../sass/settings.scss","../sass/app.scss"], "names": [], "file": "app.css" diff --git a/sass/vaults.scss b/sass/vaults.scss index bd058861..2f7aa1ba 100644 --- a/sass/vaults.scss +++ b/sass/vaults.scss @@ -4,7 +4,7 @@ padding: 12px; font-weight: bold; text-align: center; - z-index: 9999; + z-index: 800; background-color: red; color: white; .fa-times{