From e52fbf061dde4639cb5ba81cdc73235e0cd46b7b Mon Sep 17 00:00:00 2001 From: Paul de Vries Date: Mon, 5 Dec 2016 13:56:19 +0100 Subject: [PATCH 1/2] Add support to save credentials to a password manager #1607 --- src/octoprint/server/util/flask.py | 1 + .../static/js/app/bindings/valuewithinit.js | 11 +++++++++++ .../static/js/app/viewmodels/loginstate.js | 15 +++++++-------- src/octoprint/templates/navbar/login.jinja2 | 18 ++++++++++-------- 4 files changed, 29 insertions(+), 16 deletions(-) create mode 100644 src/octoprint/static/js/app/bindings/valuewithinit.js diff --git a/src/octoprint/server/util/flask.py b/src/octoprint/server/util/flask.py index 36a1fd5e..56590bf8 100644 --- a/src/octoprint/server/util/flask.py +++ b/src/octoprint/server/util/flask.py @@ -1297,6 +1297,7 @@ def collect_core_assets(enable_gcodeviewer=True, preferred_stylesheet="css"): 'js/app/bindings/slimscrolledforeach.js', 'js/app/bindings/toggle.js', 'js/app/bindings/togglecontent.js', + 'js/app/bindings/valuewithinit.js', 'js/app/viewmodels/appearance.js', 'js/app/viewmodels/connection.js', 'js/app/viewmodels/control.js', diff --git a/src/octoprint/static/js/app/bindings/valuewithinit.js b/src/octoprint/static/js/app/bindings/valuewithinit.js new file mode 100644 index 00000000..dce55826 --- /dev/null +++ b/src/octoprint/static/js/app/bindings/valuewithinit.js @@ -0,0 +1,11 @@ +ko.bindingHandlers.valueWithInit = { + init: function(element, valueAccessor, allBindingsAccessor, context) { + var observable = valueAccessor(); + var value = element.value; + + observable(value); + + ko.bindingHandlers.value.init(element, valueAccessor, allBindingsAccessor, context); + }, + update: ko.bindingHandlers.value.update +}; \ No newline at end of file diff --git a/src/octoprint/static/js/app/viewmodels/loginstate.js b/src/octoprint/static/js/app/viewmodels/loginstate.js index 7a72a0cd..05766fd0 100644 --- a/src/octoprint/static/js/app/viewmodels/loginstate.js +++ b/src/octoprint/static/js/app/viewmodels/loginstate.js @@ -76,6 +76,10 @@ $(function() { self.loginUser(""); self.loginPass(""); self.loginRemember(false); + + if (history && history.replaceState) { + history.replaceState({success: true}, document.title, window.location.pathname); + } }) .fail(function() { new PNotify({title: gettext("Login failed"), text: gettext("User unknown or wrong password"), type: "error"}); @@ -95,14 +99,9 @@ $(function() { }); }; - self.onLoginUserKeyup = function(data, event) { - if (event.keyCode == 13) { - self.elementPasswordInput.focus(); - } - }; - - self.onLoginPassKeyup = function(data, event) { - if (event.keyCode == 13) { + self.prepareLogin = function(data, event, extra) { + if (event.type === "submit" || (event.type === "keyup" && event.keyCode == 13)) { + event.preventDefault(); self.login(); } }; diff --git a/src/octoprint/templates/navbar/login.jinja2 b/src/octoprint/templates/navbar/login.jinja2 index f712f82d..fa70fa17 100644 --- a/src/octoprint/templates/navbar/login.jinja2 +++ b/src/octoprint/templates/navbar/login.jinja2 @@ -3,14 +3,16 @@