diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 761b2ae717..eec7d8a5f7 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -7085,7 +7085,7 @@ void Application::updateWindowTitle() const { auto isInErrorState = nodeList->getDomainHandler().isInErrorState(); bool isMetaverseLoggedIn = accountManager->isLoggedIn(); bool isDomainLoggedIn = domainAccountManager->isLoggedIn(); - qCDebug(interfaceapp) << "Is Logged Into Domain:" << isDomainLoggedIn; + QString authedDomain = domainAccountManager->getAuthedDomain(); QString buildVersion = " - Vircadia - " + (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable ? QString("Version") : QString("Build")) @@ -7095,8 +7095,7 @@ void Application::updateWindowTitle() const { nodeList->getDomainHandler().isConnected() ? "" : " (NOT CONNECTED)"; QString metaverseUsername = accountManager->getAccountInfo().getUsername(); - // ###### TODO - // QString domainUsername = domainAccountManager->getUsername(); + QString domainUsername = domainAccountManager->getUsername(); setCrashAnnotation("sentry[user][metaverseUsername]", metaverseUsername.toStdString()); @@ -7122,10 +7121,10 @@ void Application::updateWindowTitle() const { } QString domainDetails; - if (isDomainLoggedIn) { + if (currentPlaceName == authedDomain && isDomainLoggedIn) { // ###### TODO // domainDetails = "Domain: Logged in as " + domainUsername; - domainDetails = "Domain: Logged In"; + domainDetails = "Domain: Logged in as " + domainUsername; } else { domainDetails = "Domain: Not Logged In"; } diff --git a/libraries/networking/src/DomainAccountManager.cpp b/libraries/networking/src/DomainAccountManager.cpp index 6bb868df61..19c16178e2 100644 --- a/libraries/networking/src/DomainAccountManager.cpp +++ b/libraries/networking/src/DomainAccountManager.cpp @@ -18,7 +18,9 @@ #include #include +#include +#include "NodeList.h" #include "NetworkingConstants.h" #include "NetworkLogging.h" #include "NetworkAccessManager.h" @@ -101,6 +103,8 @@ void DomainAccountManager::requestAccessTokenFinished() { // miniOrange plugin provides no scope. if (rootObject.contains("access_token")) { // Success. + auto nodeList = DependencyManager::get(); + _domain_name = nodeList->getDomainHandler().getHostname(); QUrl rootURL = requestReply->url(); rootURL.setPath(""); setTokensFromJSON(rootObject, rootURL); @@ -133,10 +137,12 @@ bool DomainAccountManager::accessTokenIsExpired() { bool DomainAccountManager::hasValidAccessToken() { - QString currentDomainAccessToken = domainAccessToken.get(); - - if (currentDomainAccessToken.isEmpty() || accessTokenIsExpired()) { + // ###### TODO: wire this up to actually retrieve a token (based on session or storage) and confirm that it is in fact valid and relevant to the current domain. + // QString currentDomainAccessToken = domainAccessToken.get(); + QString currentDomainAccessToken = _access_token; + // if (currentDomainAccessToken.isEmpty() || accessTokenIsExpired()) { + if (currentDomainAccessToken.isEmpty()) { if (VERBOSE_HTTP_REQUEST_DEBUGGING) { qCDebug(networking) << "An access token is required for requests to" << qPrintable(_authURL.toString()); @@ -153,23 +159,20 @@ bool DomainAccountManager::hasValidAccessToken() { return true; } - } void DomainAccountManager::setTokensFromJSON(const QJsonObject& jsonObject, const QUrl& url) { _access_token = jsonObject["access_token"].toString(); _refresh_token = jsonObject["refresh_token"].toString(); - // ####### TODO: Enable and use these. // ####### TODO: Protect these per AccountManager? // ######: TODO: clientID needed? - /* - qCDebug(networking) << "Storing a domain account with access-token for" << qPrintable(url.toString()); - domainAccessToken.set(jsonObject["access_token"].toString()); - domainAccessRefreshToken.set(jsonObject["refresh_token"].toString()); - domainAccessTokenExpiresIn.set(QDateTime::currentMSecsSinceEpoch() + (jsonObject["expires_in"].toDouble() * 1000)); - domainAccessTokenType.set(jsonObject["token_type"].toString()); - */ + + // qCDebug(networking) << "Storing a domain account with access-token for" << qPrintable(url.toString()); + // domainAccessToken.set(jsonObject["access_token"].toString()); + // domainAccessRefreshToken.set(jsonObject["refresh_token"].toString()); + // domainAccessTokenExpiresIn.set(QDateTime::currentMSecsSinceEpoch() + (jsonObject["expires_in"].toDouble() * 1000)); + // domainAccessTokenType.set(jsonObject["token_type"].toString()); } bool DomainAccountManager::checkAndSignalForAccessToken() { diff --git a/libraries/networking/src/DomainAccountManager.h b/libraries/networking/src/DomainAccountManager.h index 1590e4d467..c8bc5e912c 100644 --- a/libraries/networking/src/DomainAccountManager.h +++ b/libraries/networking/src/DomainAccountManager.h @@ -29,8 +29,9 @@ public: QString getUsername() { return _username; } QString getAccessToken() { return _access_token; } QString getRefreshToken() { return _refresh_token; } + QString getAuthedDomain() { return _domain_name; } - bool isLoggedIn() { return hasValidAccessToken(); } + bool isLoggedIn() { return !_authURL.isEmpty() && hasValidAccessToken(); } Q_INVOKABLE bool checkAndSignalForAccessToken(); @@ -59,6 +60,7 @@ private: QString _username; // ####### TODO: Store elsewhere? QString _access_token; // ####... "" QString _refresh_token; // ####... "" + QString _domain_name; // }; #endif // hifi_DomainAccountManager_h