From d3320ab17b8fbbac8f3cd405ef02513bc607e014 Mon Sep 17 00:00:00 2001 From: Kasen IO <kasenvr@gmail.com> Date: Thu, 23 Jul 2020 00:18:04 -0400 Subject: [PATCH] Separate domain vs metaverse login denials for Interface. --- domain-server/src/DomainGatekeeper.cpp | 2 +- libraries/networking/src/DomainHandler.cpp | 32 ++++++++++++++++++---- libraries/networking/src/DomainHandler.h | 6 ++-- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/domain-server/src/DomainGatekeeper.cpp b/domain-server/src/DomainGatekeeper.cpp index 09a0446468..0ec39c10fa 100644 --- a/domain-server/src/DomainGatekeeper.cpp +++ b/domain-server/src/DomainGatekeeper.cpp @@ -439,7 +439,7 @@ SharedNodePointer DomainGatekeeper::processAgentConnectRequest(const NodeConnect if (!userPerms.can(NodePermissions::Permission::canConnectToDomain)) { sendConnectionDeniedPacket("You lack the required permissions to connect to this domain.", - nodeConnection.senderSockAddr, DomainHandler::ConnectionRefusedReason::NotAuthorized); + nodeConnection.senderSockAddr, DomainHandler::ConnectionRefusedReason::NotAuthorizedMetaverse); #ifdef WANT_DEBUG qDebug() << "stalling login due to permissions:" << username; #endif diff --git a/libraries/networking/src/DomainHandler.cpp b/libraries/networking/src/DomainHandler.cpp index d34b5cf090..cd6af03e47 100644 --- a/libraries/networking/src/DomainHandler.cpp +++ b/libraries/networking/src/DomainHandler.cpp @@ -144,7 +144,8 @@ void DomainHandler::hardReset(QString reason) { bool DomainHandler::isHardRefusal(int reasonCode) { return (reasonCode == (int)ConnectionRefusedReason::ProtocolMismatch || reasonCode == (int)ConnectionRefusedReason::TooManyUsers || - reasonCode == (int)ConnectionRefusedReason::NotAuthorized || + reasonCode == (int)ConnectionRefusedReason::NotAuthorizedMetaverse || + reasonCode == (int)ConnectionRefusedReason::NotAuthorizedDomain || reasonCode == (int)ConnectionRefusedReason::TimedOut); } @@ -489,10 +490,25 @@ void DomainHandler::processICEResponsePacket(QSharedPointer<ReceivedMessage> mes } } -bool DomainHandler::reasonSuggestsLogin(ConnectionRefusedReason reasonCode) { +bool DomainHandler::reasonSuggestsMetaverseLogin(ConnectionRefusedReason reasonCode) { switch (reasonCode) { case ConnectionRefusedReason::LoginError: - case ConnectionRefusedReason::NotAuthorized: + case ConnectionRefusedReason::NotAuthorizedMetaverse: + return true; + + default: + case ConnectionRefusedReason::Unknown: + case ConnectionRefusedReason::ProtocolMismatch: + case ConnectionRefusedReason::TooManyUsers: + return false; + } + return false; +} + +bool DomainHandler::reasonSuggestsDomainLogin(ConnectionRefusedReason reasonCode) { + switch (reasonCode) { + case ConnectionRefusedReason::LoginError: + case ConnectionRefusedReason::NotAuthorizedDomain: return true; default: @@ -543,9 +559,9 @@ void DomainHandler::processDomainServerConnectionDeniedPacket(QSharedPointer<Rec auto accountManager = DependencyManager::get<AccountManager>(); - // Some connection refusal reasons imply that a login is required. If so, suggest a new login - if (reasonSuggestsLogin(reasonCode)) { - qCWarning(networking) << "Make sure you are logged in."; + // Some connection refusal reasons imply that a login is required. If so, suggest a new login. + if (reasonSuggestsMetaverseLogin(reasonCode)) { + qCWarning(networking) << "Make sure you are logged in to the metaverse."; if (!_hasCheckedForAccessToken) { accountManager->checkAndSignalForAccessToken(); @@ -559,6 +575,10 @@ void DomainHandler::processDomainServerConnectionDeniedPacket(QSharedPointer<Rec accountManager->generateNewUserKeypair(); _connectionDenialsSinceKeypairRegen = 0; } + } else if (reasonSuggestsDomainLogin(reasonCode)) { + qCWarning(networking) << "Make sure you are logged in to the domain."; + + } } diff --git a/libraries/networking/src/DomainHandler.h b/libraries/networking/src/DomainHandler.h index 178c56c34a..1f97327ab0 100644 --- a/libraries/networking/src/DomainHandler.h +++ b/libraries/networking/src/DomainHandler.h @@ -199,7 +199,8 @@ public: Unknown, ProtocolMismatch, LoginError, - NotAuthorized, + NotAuthorizedMetaverse, + NotAuthorizedDomain, TooManyUsers, TimedOut }; @@ -247,7 +248,8 @@ signals: void limitOfSilentDomainCheckInsReached(); private: - bool reasonSuggestsLogin(ConnectionRefusedReason reasonCode); + bool reasonSuggestsMetaverseLogin(ConnectionRefusedReason reasonCode); + bool reasonSuggestsDomainLogin(ConnectionRefusedReason reasonCode); void sendDisconnectPacket(); void hardReset(QString reason);