Merge pull request #2 from overte-org/tell-accountmanager-url-changed

Tell accountmanager url changed
This commit is contained in:
ksuprynowicz 2022-01-28 19:40:46 +01:00 committed by GitHub
commit e6b78fdedf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 97 additions and 26 deletions

View file

@ -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 {
@ -118,6 +131,10 @@ 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
}
@ -147,7 +164,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
@ -237,18 +254,11 @@ Item {
break;
case Qt.Key_Backtab:
event.accepted = true;
passwordField.focus = true;
metaverseServerField.focus = true;
break;
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 +295,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;
}
@ -360,7 +364,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;
@ -369,18 +373,69 @@ 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: passwordField.bottom
topMargin: 1.5 * hifi.dimensions.contentSpacing.y
}
placeholderText: "Metaverse Server (optional)"
activeFocusOnPress: true
Keys.onPressed: {
switch (event.key) {
case Qt.Key_Tab:
event.accepted = true;
displayNameField.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) {
var url = metaverseServerField.text;
console.log("Setting metaverse server to", url);
Settings.setValue("private/selectedMetaverseURL", url);
if(AccountServices.isLoggedIn()){
AccountServices.logOut();
}
passwordField.text = "";
AccountServices.updateAuthURLFromMetaverseServerURL();
}
break;
}
}
onFocusChanged: {
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();
}
passwordField.text = "";
AccountServices.updateAuthURLFromMetaverseServerURL();
}
}
}
}
}
HifiControlsUit.CheckBox {
id: keepMeLoggedInCheckbox
checked: !isLoggingInToDomain ? Settings.getValue("keepMeLoggedIn", false) : false; // ####### TODO
@ -391,9 +446,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);

View file

@ -72,6 +72,11 @@ void AccountServicesScriptingInterface::logOut() {
return accountManager->logout();
}
void AccountServicesScriptingInterface::updateAuthURLFromMetaverseServerURL() {
auto accountManager = DependencyManager::get<AccountManager>();
return accountManager->updateAuthURLFromMetaverseServerURL();
}
void AccountServicesScriptingInterface::loggedOut() {
emit AccountServicesScriptingInterface::disconnected(QString("logout"));
}

View file

@ -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();

View file

@ -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);

View file

@ -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();