From 5a09064f505569929bb27d9cecea62b58bb0cba0 Mon Sep 17 00:00:00 2001 From: Frost Date: Sun, 11 Apr 2021 23:10:19 +0000 Subject: [PATCH 1/8] Add metaverse server field on the login screen --- .../qml/LoginDialog/LinkAccountBody.qml | 75 +++++++++++++------ 1 file changed, 54 insertions(+), 21 deletions(-) diff --git a/interface/resources/qml/LoginDialog/LinkAccountBody.qml b/interface/resources/qml/LoginDialog/LinkAccountBody.qml index a4d05d9bc4..a4b56a7e6f 100644 --- a/interface/resources/qml/LoginDialog/LinkAccountBody.qml +++ b/interface/resources/qml/LoginDialog/LinkAccountBody.qml @@ -74,6 +74,19 @@ Item { } function login() { + // make sure the metaverse server is set so we don't send your password to the wrong place! + if (!isLoggingInToDomain) { + Settings.setValue("private/selectedMetaverseURL", metaverseServerField.text); + } + + if (keepMeLoggedInCheckbox.checked) { + if (!isLoggingInToDomain) { + Settings.setValue("keepMeLoggedIn/savedUsername", emailField.text); + } else { + // ####### TODO + } + } + if (!isLoggingInToDomain) { loginDialog.login(emailField.text, passwordField.text); } else { @@ -242,13 +255,6 @@ Item { case Qt.Key_Enter: case Qt.Key_Return: event.accepted = true; - if (keepMeLoggedInCheckbox.checked) { - if (!isLoggingInToDomain) { - Settings.setValue("keepMeLoggedIn/savedUsername", emailField.text); - } else { - // ####### TODO - } - } linkAccountBody.login(); break; } @@ -285,13 +291,7 @@ Item { case Qt.Key_Enter: case Qt.Key_Return: event.accepted = true; - if (keepMeLoggedInCheckbox.checked) { - if (!isLoggingInToDomain) { - Settings.setValue("keepMeLoggedIn/savedUsername", emailField.text); - } else { - // ####### TODO - } - } + linkAccountBody.login(); break; } @@ -369,17 +369,50 @@ Item { case Qt.Key_Enter: case Qt.Key_Return: event.accepted = true; - if (keepMeLoggedInCheckbox.checked) { - if (!isLoggingInToDomain) { - Settings.setValue("keepMeLoggedIn/savedUsername", emailField.text); - } else { - // ####### TODO - } + linkAccountBody.login(); + break; + } + } + } + HifiControlsUit.TextField { + id: metaverseServerField + width: root.bannerWidth + height: linkAccountBody.textFieldHeight + font.pixelSize: linkAccountBody.textFieldFontSize + styleRenderType: Text.QtRendering + anchors { + top: loginDialogTextContainer.bottom + topMargin: 1.5 * hifi.dimensions.contentSpacing.y + } + placeholderText: "Metaverse Server (optional)" + activeFocusOnPress: true + visible: !isLoggingInToDomain + Keys.onPressed: { + switch (event.key) { + case Qt.Key_Tab: + event.accepted = true; + emailField.focus = true; + break; + case Qt.Key_Backtab: + event.accepted = true; + passwordField.focus = true; + break; + case Qt.Key_Enter: + case Qt.Key_Return: + event.accepted = true; + if (!isLoggingInToDomain) { + Settings.setValue("private/selectedMetaverseURL", metaverseServerField.text); } linkAccountBody.login(); break; } } + onFocusChanged: { + root.text = ""; + if (focus) { + root.isPassword = false; + } + } } HifiControlsUit.CheckBox { id: keepMeLoggedInCheckbox @@ -714,4 +747,4 @@ Item { break; } } -} +metaverseServerField From b5258ead8094927357623464762b0282c7ba8f0b Mon Sep 17 00:00:00 2001 From: Frost Date: Sun, 11 Apr 2021 23:33:05 +0000 Subject: [PATCH 2/8] Fix height, tabbing, and other stuff --- .../resources/qml/LoginDialog/LinkAccountBody.qml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/interface/resources/qml/LoginDialog/LinkAccountBody.qml b/interface/resources/qml/LoginDialog/LinkAccountBody.qml index a4b56a7e6f..92de442ad7 100644 --- a/interface/resources/qml/LoginDialog/LinkAccountBody.qml +++ b/interface/resources/qml/LoginDialog/LinkAccountBody.qml @@ -131,6 +131,9 @@ Item { if (!isLoggingInToDomain) { var savedUsername = Settings.getValue("keepMeLoggedIn/savedUsername", ""); emailField.text = keepMeLoggedInCheckbox.checked ? savedUsername === "Unknown user" ? "" : savedUsername : ""; + + var metaverseServer = Settings.getValue("private/selectedMetaverseURL", ""); + metaverseServerField.text = metaverseServer; } else { // ####### TODO } @@ -160,7 +163,7 @@ Item { Item { id: loginContainer width: displayNameField.width - height: errorContainer.height + loginDialogTextContainer.height + displayNameField.height + emailField.height + passwordField.height + 5.5 * hifi.dimensions.contentSpacing.y + + height: errorContainer.height + loginDialogTextContainer.height + displayNameField.height + emailField.height + passwordField.height + metaverseServerField.height + 5.5 * hifi.dimensions.contentSpacing.y + keepMeLoggedInCheckbox.height + loginButton.height + cantAccessTextMetrics.height + continueButton.height anchors { top: parent.top @@ -250,7 +253,7 @@ Item { break; case Qt.Key_Backtab: event.accepted = true; - passwordField.focus = true; + metaverseServerField.focus = true; break; case Qt.Key_Enter: case Qt.Key_Return: @@ -360,7 +363,7 @@ Item { switch (event.key) { case Qt.Key_Tab: event.accepted = true; - displayNameField.focus = true; + metaverseServerField.focus = true; break; case Qt.Key_Backtab: event.accepted = true; @@ -386,12 +389,11 @@ Item { } placeholderText: "Metaverse Server (optional)" activeFocusOnPress: true - visible: !isLoggingInToDomain Keys.onPressed: { switch (event.key) { case Qt.Key_Tab: event.accepted = true; - emailField.focus = true; + displayNameField.focus = true; break; case Qt.Key_Backtab: event.accepted = true; From 3d0c5e26b7ade6234e9dd7ec32abaa0605c34555 Mon Sep 17 00:00:00 2001 From: Frost Date: Mon, 12 Apr 2021 00:36:41 +0000 Subject: [PATCH 3/8] Fix some anchors and add logging --- .../resources/qml/LoginDialog/LinkAccountBody.qml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/interface/resources/qml/LoginDialog/LinkAccountBody.qml b/interface/resources/qml/LoginDialog/LinkAccountBody.qml index 92de442ad7..9c72f2e545 100644 --- a/interface/resources/qml/LoginDialog/LinkAccountBody.qml +++ b/interface/resources/qml/LoginDialog/LinkAccountBody.qml @@ -131,8 +131,9 @@ Item { if (!isLoggingInToDomain) { var savedUsername = Settings.getValue("keepMeLoggedIn/savedUsername", ""); emailField.text = keepMeLoggedInCheckbox.checked ? savedUsername === "Unknown user" ? "" : savedUsername : ""; - + var metaverseServer = Settings.getValue("private/selectedMetaverseURL", ""); + console.log("Saved metaverse server:", metaverseServer); metaverseServerField.text = metaverseServer; } else { // ####### TODO @@ -384,7 +385,7 @@ Item { font.pixelSize: linkAccountBody.textFieldFontSize styleRenderType: Text.QtRendering anchors { - top: loginDialogTextContainer.bottom + top: passwordField.bottom topMargin: 1.5 * hifi.dimensions.contentSpacing.y } placeholderText: "Metaverse Server (optional)" @@ -403,6 +404,7 @@ Item { case Qt.Key_Return: event.accepted = true; if (!isLoggingInToDomain) { + console.log("Setting metaverse server to", metaverseServerField.text); Settings.setValue("private/selectedMetaverseURL", metaverseServerField.text); } linkAccountBody.login(); @@ -426,9 +428,9 @@ Item { color: hifi.colors.white; visible: !isLoggingInToDomain anchors { - top: passwordField.bottom; + top: metaverseServerField.bottom; topMargin: hifi.dimensions.contentSpacing.y; - left: passwordField.left; + left: metaverseServerField.left; } onCheckedChanged: { Settings.setValue("keepMeLoggedIn", checked); @@ -749,4 +751,4 @@ Item { break; } } -metaverseServerField +} From d2f878000e0d2264199350582b81fb9ff2580da5 Mon Sep 17 00:00:00 2001 From: Frost Date: Mon, 12 Apr 2021 21:36:07 +0000 Subject: [PATCH 4/8] Tell the AccountManager that the auth URL changed --- interface/resources/qml/LoginDialog/LinkAccountBody.qml | 6 ++++-- libraries/networking/src/AccountManager.h | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/interface/resources/qml/LoginDialog/LinkAccountBody.qml b/interface/resources/qml/LoginDialog/LinkAccountBody.qml index 9c72f2e545..871800ea1c 100644 --- a/interface/resources/qml/LoginDialog/LinkAccountBody.qml +++ b/interface/resources/qml/LoginDialog/LinkAccountBody.qml @@ -404,8 +404,10 @@ Item { case Qt.Key_Return: event.accepted = true; if (!isLoggingInToDomain) { - console.log("Setting metaverse server to", metaverseServerField.text); - Settings.setValue("private/selectedMetaverseURL", metaverseServerField.text); + var url = metaverseServerField.text; + console.log("Setting metaverse server to", url); + Settings.setValue("private/selectedMetaverseURL", url); + setAuthURL(url); } linkAccountBody.login(); break; diff --git a/libraries/networking/src/AccountManager.h b/libraries/networking/src/AccountManager.h index bd318e3af5..01aae6eee1 100644 --- a/libraries/networking/src/AccountManager.h +++ b/libraries/networking/src/AccountManager.h @@ -134,6 +134,7 @@ public slots: void logout(); void generateNewUserKeypair() { generateNewKeypair(); } void generateNewDomainKeypair(const QUuid& domainID) { generateNewKeypair(false, domainID); } + void setAuthURL(cost QUrl& authURL); signals: void authRequired(); From d2f0583a360e7a5f90c48a31c0dfed6794176678 Mon Sep 17 00:00:00 2001 From: Frost Date: Sat, 18 Dec 2021 13:36:00 -0800 Subject: [PATCH 5/8] Remove duplicate setAuthURL declaration --- libraries/networking/src/AccountManager.h | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/networking/src/AccountManager.h b/libraries/networking/src/AccountManager.h index 01aae6eee1..bd318e3af5 100644 --- a/libraries/networking/src/AccountManager.h +++ b/libraries/networking/src/AccountManager.h @@ -134,7 +134,6 @@ public slots: void logout(); void generateNewUserKeypair() { generateNewKeypair(); } void generateNewDomainKeypair(const QUuid& domainID) { generateNewKeypair(false, domainID); } - void setAuthURL(cost QUrl& authURL); signals: void authRequired(); From 30806ce34621f0ebb55c9f0bc5927a6e0b96ef8e Mon Sep 17 00:00:00 2001 From: ksuprynowicz Date: Sat, 22 Jan 2022 18:41:04 +0100 Subject: [PATCH 6/8] Inform AccountManager about metaverse server change --- interface/resources/qml/LoginDialog/LinkAccountBody.qml | 6 +++++- .../src/scripting/AccountServicesScriptingInterface.cpp | 5 +++++ interface/src/scripting/AccountServicesScriptingInterface.h | 6 ++++++ libraries/networking/src/AccountManager.cpp | 4 ++++ libraries/networking/src/AccountManager.h | 1 + 5 files changed, 21 insertions(+), 1 deletion(-) diff --git a/interface/resources/qml/LoginDialog/LinkAccountBody.qml b/interface/resources/qml/LoginDialog/LinkAccountBody.qml index 871800ea1c..43013eb61e 100644 --- a/interface/resources/qml/LoginDialog/LinkAccountBody.qml +++ b/interface/resources/qml/LoginDialog/LinkAccountBody.qml @@ -407,7 +407,11 @@ Item { var url = metaverseServerField.text; console.log("Setting metaverse server to", url); Settings.setValue("private/selectedMetaverseURL", url); - setAuthURL(url); + //setAuthURL(url); + if(AccountServices.isLoggedIn()){ + AccountServices.logOut(); + } + AccountServices.updateAuthURLFromMetaverseServerURL(); } linkAccountBody.login(); break; diff --git a/interface/src/scripting/AccountServicesScriptingInterface.cpp b/interface/src/scripting/AccountServicesScriptingInterface.cpp index 34f33903e2..87aacad631 100644 --- a/interface/src/scripting/AccountServicesScriptingInterface.cpp +++ b/interface/src/scripting/AccountServicesScriptingInterface.cpp @@ -72,6 +72,11 @@ void AccountServicesScriptingInterface::logOut() { return accountManager->logout(); } +void AccountServicesScriptingInterface::updateAuthURLFromMetaverseServerURL() { + auto accountManager = DependencyManager::get(); + return accountManager->updateAuthURLFromMetaverseServerURL(); +} + void AccountServicesScriptingInterface::loggedOut() { emit AccountServicesScriptingInterface::disconnected(QString("logout")); } diff --git a/interface/src/scripting/AccountServicesScriptingInterface.h b/interface/src/scripting/AccountServicesScriptingInterface.h index 00c17db380..723622523c 100644 --- a/interface/src/scripting/AccountServicesScriptingInterface.h +++ b/interface/src/scripting/AccountServicesScriptingInterface.h @@ -192,6 +192,12 @@ public slots: * @function AccountServices.logOut */ void logOut(); + + /*@jsdoc + * Updates Metaverse Server URL in AccountManager. It's called by Login window after Metaverse Server URL is changed. + * @function AccountServices.updateAuthURLFromMetaverseServerURL + */ + void updateAuthURLFromMetaverseServerURL(); private slots: void loggedOut(); diff --git a/libraries/networking/src/AccountManager.cpp b/libraries/networking/src/AccountManager.cpp index 9e4cb01e45..514efb431f 100644 --- a/libraries/networking/src/AccountManager.cpp +++ b/libraries/networking/src/AccountManager.cpp @@ -205,6 +205,10 @@ void AccountManager::setAuthURL(const QUrl& authURL) { } } +void AccountManager::updateAuthURLFromMetaverseServerURL() { + setAuthURL(MetaverseAPI::getCurrentMetaverseServerURL()); +} + void AccountManager::setSessionID(const QUuid& sessionID) { if (_sessionID != sessionID) { qCDebug(networking) << "Metaverse session ID changed to" << uuidStringWithoutCurlyBraces(sessionID); diff --git a/libraries/networking/src/AccountManager.h b/libraries/networking/src/AccountManager.h index bd318e3af5..ad8a92a187 100644 --- a/libraries/networking/src/AccountManager.h +++ b/libraries/networking/src/AccountManager.h @@ -79,6 +79,7 @@ public: const QUrl& getAuthURL() const { return _authURL; } void setAuthURL(const QUrl& authURL); bool hasAuthEndpoint() { return !_authURL.isEmpty(); } + Q_INVOKABLE void updateAuthURLFromMetaverseServerURL(); bool isLoggedIn() { return !_authURL.isEmpty() && hasValidAccessToken(); } bool hasValidAccessToken(); From 000166beef440a455cdce42a39e705b3d83a2a6d Mon Sep 17 00:00:00 2001 From: ksuprynowicz Date: Sat, 22 Jan 2022 19:30:03 +0100 Subject: [PATCH 7/8] Update Metaverse server URL on focus change --- .../resources/qml/LoginDialog/LinkAccountBody.qml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/interface/resources/qml/LoginDialog/LinkAccountBody.qml b/interface/resources/qml/LoginDialog/LinkAccountBody.qml index 43013eb61e..0cea5577f5 100644 --- a/interface/resources/qml/LoginDialog/LinkAccountBody.qml +++ b/interface/resources/qml/LoginDialog/LinkAccountBody.qml @@ -407,7 +407,6 @@ Item { var url = metaverseServerField.text; console.log("Setting metaverse server to", url); Settings.setValue("private/selectedMetaverseURL", url); - //setAuthURL(url); if(AccountServices.isLoggedIn()){ AccountServices.logOut(); } @@ -421,6 +420,18 @@ Item { root.text = ""; if (focus) { root.isPassword = false; + }else{ + var url = metaverseServerField.text; + if(!(url == Settings.getValue("private/selectedMetaverseURL")) && !(url == "")){ + if (!isLoggingInToDomain) { + console.log("Setting metaverse server to", url); + Settings.setValue("private/selectedMetaverseURL", url); + if(AccountServices.isLoggedIn()){ + AccountServices.logOut(); + } + AccountServices.updateAuthURLFromMetaverseServerURL(); + } + } } } } From dc29dc49983c56728de84f8c277afed84e1f0da4 Mon Sep 17 00:00:00 2001 From: ksuprynowicz Date: Fri, 28 Jan 2022 18:55:58 +0100 Subject: [PATCH 8/8] Clear password on metaverse server change --- interface/resources/qml/LoginDialog/LinkAccountBody.qml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/interface/resources/qml/LoginDialog/LinkAccountBody.qml b/interface/resources/qml/LoginDialog/LinkAccountBody.qml index 0cea5577f5..67fa06c05a 100644 --- a/interface/resources/qml/LoginDialog/LinkAccountBody.qml +++ b/interface/resources/qml/LoginDialog/LinkAccountBody.qml @@ -410,9 +410,9 @@ Item { if(AccountServices.isLoggedIn()){ AccountServices.logOut(); } + passwordField.text = ""; AccountServices.updateAuthURLFromMetaverseServerURL(); } - linkAccountBody.login(); break; } } @@ -429,6 +429,7 @@ Item { if(AccountServices.isLoggedIn()){ AccountServices.logOut(); } + passwordField.text = ""; AccountServices.updateAuthURLFromMetaverseServerURL(); } }