diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 7350a23b9a..1f2b74680b 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3071,7 +3071,7 @@ void Application::updateWindowTitle(){ QString buildVersion = " (build " + applicationVersion() + ")"; NodeList* nodeList = NodeList::getInstance(); - QString username = AccountManager::getInstance().getUsername(); + QString username = AccountManager::getInstance().getAccountInfo().getUsername(); QString title = QString() + (!username.isEmpty() ? username + " " : QString()) + nodeList->getSessionUUID().toString() + " @ " + nodeList->getDomainHandler().getHostname() + buildVersion; qDebug("Application title set to: %s", title.toStdString().c_str()); diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 44117df55c..14fa0f60e4 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -1119,7 +1119,7 @@ void Menu::toggleLoginMenuItem() { if (accountManager.isLoggedIn()) { // change the menu item to logout - _loginAction->setText("Logout " + accountManager.getUsername()); + _loginAction->setText("Logout " + accountManager.getAccountInfo().getUsername()); connect(_loginAction, &QAction::triggered, &accountManager, &AccountManager::logout); } else { // change the menu item to login diff --git a/interface/src/XmppClient.cpp b/interface/src/XmppClient.cpp index d930c16b53..48c1f5d976 100644 --- a/interface/src/XmppClient.cpp +++ b/interface/src/XmppClient.cpp @@ -34,12 +34,13 @@ XmppClient& XmppClient::getInstance() { void XmppClient::xmppConnected() { _publicChatRoom = _xmppMUCManager.addRoom(DEFAULT_CHAT_ROOM); - _publicChatRoom->setNickName(AccountManager::getInstance().getUsername()); + _publicChatRoom->setNickName(AccountManager::getInstance().getAccountInfo().getUsername()); _publicChatRoom->join(); } void XmppClient::xmppError(QXmppClient::Error error) { - qDebug() << "Error connnecting to XMPP for user " << AccountManager::getInstance().getUsername() << ": " << error; + qDebug() << "Error connnecting to XMPP for user " + << AccountManager::getInstance().getAccountInfo().getUsername() << ": " << error; } void XmppClient::connectToServer() { @@ -50,8 +51,8 @@ void XmppClient::connectToServer() { connect(&_xmppClient, SIGNAL(error(QXmppClient::Error)), this, SLOT(xmppError(QXmppClient::Error))); } AccountManager& accountManager = AccountManager::getInstance(); - QString user = accountManager.getUsername(); - const QString& password = accountManager.getXMPPPassword(); + QString user = accountManager.getAccountInfo().getUsername(); + const QString& password = accountManager.getAccountInfo().getXMPPPassword(); _xmppClient.connectToServer(user + "@" + DEFAULT_XMPP_SERVER, password); } diff --git a/interface/src/ui/ChatWindow.cpp b/interface/src/ui/ChatWindow.cpp index e0802c6bc5..3f2df5593b 100644 --- a/interface/src/ui/ChatWindow.cpp +++ b/interface/src/ui/ChatWindow.cpp @@ -254,7 +254,7 @@ void ChatWindow::messageReceived(const QXmppMessage& message) { } // Update background if this is a message from the current user - bool fromSelf = getParticipantName(message.from()) == AccountManager::getInstance().getUsername(); + bool fromSelf = getParticipantName(message.from()) == AccountManager::getInstance().getAccountInfo().getUsername(); // Create message area ChatMessageArea* messageArea = new ChatMessageArea(true); diff --git a/interface/src/ui/OAuthWebViewHandler.cpp b/interface/src/ui/OAuthWebViewHandler.cpp index d8aed59bdf..b72d2df273 100644 --- a/interface/src/ui/OAuthWebViewHandler.cpp +++ b/interface/src/ui/OAuthWebViewHandler.cpp @@ -63,7 +63,24 @@ void OAuthWebViewHandler::displayWebviewForAuthorizationURL(const QUrl& authoriz _activeWebView->setAttribute(Qt::WA_DeleteOnClose); qDebug() << "Displaying QWebView for OAuth authorization at" << authorizationURL.toString(); - _activeWebView->load(authorizationURL); + + AccountManager& accountManager = AccountManager::getInstance(); + + QUrl codedAuthorizationURL = authorizationURL; + + // check if we have an access token for this host - if so we can bypass login by adding it to the URL + if (accountManager.getAuthURL().host() == authorizationURL.host() + && accountManager.hasValidAccessToken()) { + + const QString ACCESS_TOKEN_QUERY_STRING_KEY = "access_token"; + + QUrlQuery authQuery(codedAuthorizationURL); + authQuery.addQueryItem(ACCESS_TOKEN_QUERY_STRING_KEY, accountManager.getAccountInfo().getAccessToken().token); + + codedAuthorizationURL.setQuery(authQuery); + } + + _activeWebView->load(codedAuthorizationURL); _activeWebView->show(); connect(_activeWebView->page()->networkAccessManager(), &QNetworkAccessManager::sslErrors, diff --git a/interface/src/ui/Snapshot.cpp b/interface/src/ui/Snapshot.cpp index 29c2d3c90f..243acdfb10 100644 --- a/interface/src/ui/Snapshot.cpp +++ b/interface/src/ui/Snapshot.cpp @@ -86,7 +86,7 @@ void Snapshot::saveSnapshot(QGLWidget* widget, Avatar* avatar) { // replace decimal . with '-' formattedLocation.replace('.', '-'); - QString username = AccountManager::getInstance().getUsername(); + QString username = AccountManager::getInstance().getAccountInfo().getUsername(); // normalize username, replace all non alphanumeric with '-' username.replace(QRegExp("[^A-Za-z0-9_]"), "-"); diff --git a/libraries/networking/src/AccountManager.h b/libraries/networking/src/AccountManager.h index cb76786f4e..5362e30383 100644 --- a/libraries/networking/src/AccountManager.h +++ b/libraries/networking/src/AccountManager.h @@ -55,9 +55,7 @@ public: void requestAccessToken(const QString& login, const QString& password); - QString getUsername() const { return _accountInfo.getUsername(); } - - const QString& getXMPPPassword() const { return _accountInfo.getXMPPPassword(); } + const DataServerAccountInfo& getAccountInfo() const { return _accountInfo; } void destroy() { delete _networkAccessManager; }