Separate domain vs metaverse login denials for Interface.

This commit is contained in:
Kasen IO 2020-07-23 00:18:04 -04:00
parent 84bee76968
commit d3320ab17b
3 changed files with 31 additions and 9 deletions

View file

@ -439,7 +439,7 @@ SharedNodePointer DomainGatekeeper::processAgentConnectRequest(const NodeConnect
if (!userPerms.can(NodePermissions::Permission::canConnectToDomain)) { if (!userPerms.can(NodePermissions::Permission::canConnectToDomain)) {
sendConnectionDeniedPacket("You lack the required permissions to connect to this domain.", sendConnectionDeniedPacket("You lack the required permissions to connect to this domain.",
nodeConnection.senderSockAddr, DomainHandler::ConnectionRefusedReason::NotAuthorized); nodeConnection.senderSockAddr, DomainHandler::ConnectionRefusedReason::NotAuthorizedMetaverse);
#ifdef WANT_DEBUG #ifdef WANT_DEBUG
qDebug() << "stalling login due to permissions:" << username; qDebug() << "stalling login due to permissions:" << username;
#endif #endif

View file

@ -144,7 +144,8 @@ void DomainHandler::hardReset(QString reason) {
bool DomainHandler::isHardRefusal(int reasonCode) { bool DomainHandler::isHardRefusal(int reasonCode) {
return (reasonCode == (int)ConnectionRefusedReason::ProtocolMismatch || return (reasonCode == (int)ConnectionRefusedReason::ProtocolMismatch ||
reasonCode == (int)ConnectionRefusedReason::TooManyUsers || reasonCode == (int)ConnectionRefusedReason::TooManyUsers ||
reasonCode == (int)ConnectionRefusedReason::NotAuthorized || reasonCode == (int)ConnectionRefusedReason::NotAuthorizedMetaverse ||
reasonCode == (int)ConnectionRefusedReason::NotAuthorizedDomain ||
reasonCode == (int)ConnectionRefusedReason::TimedOut); 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) { switch (reasonCode) {
case ConnectionRefusedReason::LoginError: 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; return true;
default: default:
@ -543,9 +559,9 @@ void DomainHandler::processDomainServerConnectionDeniedPacket(QSharedPointer<Rec
auto accountManager = DependencyManager::get<AccountManager>(); auto accountManager = DependencyManager::get<AccountManager>();
// Some connection refusal reasons imply that a login is required. If so, suggest a new login // Some connection refusal reasons imply that a login is required. If so, suggest a new login.
if (reasonSuggestsLogin(reasonCode)) { if (reasonSuggestsMetaverseLogin(reasonCode)) {
qCWarning(networking) << "Make sure you are logged in."; qCWarning(networking) << "Make sure you are logged in to the metaverse.";
if (!_hasCheckedForAccessToken) { if (!_hasCheckedForAccessToken) {
accountManager->checkAndSignalForAccessToken(); accountManager->checkAndSignalForAccessToken();
@ -559,6 +575,10 @@ void DomainHandler::processDomainServerConnectionDeniedPacket(QSharedPointer<Rec
accountManager->generateNewUserKeypair(); accountManager->generateNewUserKeypair();
_connectionDenialsSinceKeypairRegen = 0; _connectionDenialsSinceKeypairRegen = 0;
} }
} else if (reasonSuggestsDomainLogin(reasonCode)) {
qCWarning(networking) << "Make sure you are logged in to the domain.";
} }
} }

View file

@ -199,7 +199,8 @@ public:
Unknown, Unknown,
ProtocolMismatch, ProtocolMismatch,
LoginError, LoginError,
NotAuthorized, NotAuthorizedMetaverse,
NotAuthorizedDomain,
TooManyUsers, TooManyUsers,
TimedOut TimedOut
}; };
@ -247,7 +248,8 @@ signals:
void limitOfSilentDomainCheckInsReached(); void limitOfSilentDomainCheckInsReached();
private: private:
bool reasonSuggestsLogin(ConnectionRefusedReason reasonCode); bool reasonSuggestsMetaverseLogin(ConnectionRefusedReason reasonCode);
bool reasonSuggestsDomainLogin(ConnectionRefusedReason reasonCode);
void sendDisconnectPacket(); void sendDisconnectPacket();
void hardReset(QString reason); void hardReset(QString reason);