Skip to content

Commit 049a185

Browse files
oetikerodeimaiz
authored andcommitted
Make login form password save friendly (#315)
* make login form password save friendly
1 parent 1a3ed38 commit 049a185

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

services/web/client/source/class/qxapp/auth/core/BaseAuthPage.js

+16-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,17 @@ qx.Class.define("qxapp.auth.core.BaseAuthPage", {
2323
width: 300,
2424
height: 250
2525
});
26-
26+
// at least chrome hates it when a password input field exists
27+
// outside a form, so lets accomodate him
28+
this.addListenerOnce("appear", e => {
29+
let el = this.getContentElement();
30+
let form = this._form = new qx.html.Element("form", null, {
31+
name: "fakeLoginform",
32+
autocomplete: "on"
33+
});
34+
form.insertBefore(el);
35+
el.insertInto(form);
36+
});
2737
this._buildPage();
2838
},
2939

@@ -44,7 +54,11 @@ qx.Class.define("qxapp.auth.core.BaseAuthPage", {
4454
*/
4555

4656
members: {
47-
57+
/**
58+
* when all is said and done we should remove the form so that the password manager
59+
* knows to save the content of the form. so we save it here.
60+
*/
61+
_form: null,
4862
/**
4963
* This method gets called upon construction and
5064
* must be overriden in a subclass

services/web/client/source/class/qxapp/auth/ui/LoginPage.js

+5
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,13 @@ qx.Class.define("qxapp.auth.ui.LoginPage", {
4747
email.setPlaceholder(this.tr("Your email address"));
4848
email.setRequired(true);
4949
this.add(email);
50+
email.getContentElement().setAttribute("autocomplete", "username");
5051
this.__form.add(email, "", qx.util.Validate.email(), "email", null);
5152

5253
let pass = new qx.ui.form.PasswordField();
5354
pass.setPlaceholder(this.tr("Your password"));
5455
pass.setRequired(true);
56+
pass.getContentElement().setAttribute("autocomplete", "current-password");
5557
this.add(pass);
5658
this.__form.add(pass, "", null, "password", null);
5759

@@ -130,6 +132,9 @@ qx.Class.define("qxapp.auth.ui.LoginPage", {
130132

131133
let successFun = function(log) {
132134
this.fireDataEvent("done", log.message);
135+
// we don't need the form any more, so remove it
136+
// and thus tell the password manager to save the content
137+
this._form.dispose();
133138
};
134139

135140
let failFun = function(msg) {

0 commit comments

Comments
 (0)