From 8e5262872e41af10bd935989f89fb8f25405940e Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Fri, 22 Jul 2016 14:00:46 -0700 Subject: [PATCH] fix bug that was losing verified status for users with permissions specific to their account --- domain-server/src/DomainGatekeeper.cpp | 13 ++++++++++--- domain-server/src/DomainServerSettingsManager.h | 5 ++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/domain-server/src/DomainGatekeeper.cpp b/domain-server/src/DomainGatekeeper.cpp index 6923038ab0..718bfafdc0 100644 --- a/domain-server/src/DomainGatekeeper.cpp +++ b/domain-server/src/DomainGatekeeper.cpp @@ -21,6 +21,9 @@ #include "DomainServer.h" #include "DomainServerNodeData.h" +#define WANT_DEBUG 1 + + using SharedAssignmentPointer = QSharedPointer; DomainGatekeeper::DomainGatekeeper(DomainServer* server) : @@ -134,16 +137,17 @@ NodePermissions DomainGatekeeper::applyPermissionsForUser(bool isLocalUser, if (verifiedUsername.isEmpty()) { userPerms |= _server->_settingsManager.getStandardPermissionsForName(NodePermissions::standardNameAnonymous); #ifdef WANT_DEBUG - qDebug() << "| user-permissions: unverified or no username, so:" << userPerms; + qDebug() << "| user-permissions: unverified or no username for" << userPerms.getID() << ", so:" << userPerms; #endif } else { - userPerms.setVerifiedUserName(verifiedUsername); if (_server->_settingsManager.havePermissionsForName(verifiedUsername)) { userPerms = _server->_settingsManager.getPermissionsForName(verifiedUsername); + userPerms.setVerifiedUserName(verifiedUsername); #ifdef WANT_DEBUG qDebug() << "| user-permissions: specific user matches, so:" << userPerms; #endif } else { + userPerms.setVerifiedUserName(verifiedUsername); // they are logged into metaverse, but we don't have specific permissions for them. userPerms |= _server->_settingsManager.getStandardPermissionsForName(NodePermissions::standardNameLoggedIn); #ifdef WANT_DEBUG @@ -851,7 +855,6 @@ void DomainGatekeeper::getDomainOwnerFriendsListErrorCallback(QNetworkReply& req void DomainGatekeeper::refreshGroupsCache() { // if agents are connected to this domain, refresh our cached information about groups and memberships in such. - getDomainOwnerFriendsList(); int agentCount = 0; @@ -872,4 +875,8 @@ void DomainGatekeeper::refreshGroupsCache() { } updateNodePermissions(); + + #if WANT_DEBUG + _server->_settingsManager.debugDumpGroupsState(); + #endif } diff --git a/domain-server/src/DomainServerSettingsManager.h b/domain-server/src/DomainServerSettingsManager.h index c4d70baf21..61642d4914 100644 --- a/domain-server/src/DomainServerSettingsManager.h +++ b/domain-server/src/DomainServerSettingsManager.h @@ -87,6 +87,8 @@ public: // calls http api to refresh group information void apiRefreshGroupInformation(); + void debugDumpGroupsState(); + signals: void updateNodePermissions(); @@ -145,9 +147,6 @@ private: // keep track of answers to api queries about which users are in which groups QHash> _groupMembership; // QHash> - - - void debugDumpGroupsState(); }; #endif // hifi_DomainServerSettingsManager_h