From ba240854a7d1a260ade15d23973f44b648357066 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Fri, 16 Dec 2016 14:38:39 -0800 Subject: [PATCH] Comments and clarity --- .../src/DomainServerSettingsManager.cpp | 17 +++++++++++------ interface/resources/qml/hifi/Pal.qml | 9 ++++++--- libraries/networking/src/NodeList.cpp | 5 ++--- libraries/networking/src/NodeList.h | 2 +- .../src/UsersScriptingInterface.cpp | 2 +- .../script-engine/src/UsersScriptingInterface.h | 2 +- scripts/system/pal.js | 16 ++++++++++++---- 7 files changed, 34 insertions(+), 19 deletions(-) diff --git a/domain-server/src/DomainServerSettingsManager.cpp b/domain-server/src/DomainServerSettingsManager.cpp index 20e3d4c08d..6af8f12dfa 100644 --- a/domain-server/src/DomainServerSettingsManager.cpp +++ b/domain-server/src/DomainServerSettingsManager.cpp @@ -778,26 +778,30 @@ void DomainServerSettingsManager::processNodeKickRequestPacket(QSharedPointer message, SharedNodePointer sendingNode) { - // before we do any processing on this packet make sure it comes from a node that is allowed to kick + // Before we do any processing on this packet, make sure it comes from a node that is allowed to kick (is an admin) if (sendingNode->getCanKick()) { // From the packet, pull the UUID we're identifying QUuid nodeUUID = QUuid::fromRfc4122(message->readWithoutCopy(NUM_BYTES_RFC4122_UUID)); + // If the UUID isn't NULL... if (!nodeUUID.isNull()) { - // make sure we actually have a node with this UUID + // First, make sure we actually have a node with this UUID auto limitedNodeList = DependencyManager::get(); - auto matchingNode = limitedNodeList->nodeWithUUID(nodeUUID); + // If we do have a matching node... if (matchingNode) { - // we have a matching node, time to figure out the username + // It's time to figure out the username QString verifiedUsername = matchingNode->getPermissions().getVerifiedUserName(); + // If the verified username is Empty... if (verifiedUsername.isEmpty()) { + // Make sure we're using an empty string as the Verified Username verifiedUsername = ""; } - // setup the packet + // Setup the packet auto usernameFromIDReplyPacket = NLPacket::create(PacketType::UsernameFromIDReply, NUM_BYTES_RFC4122_UUID + sizeof(verifiedUsername), true); // write the node ID to the packet @@ -805,6 +809,7 @@ void DomainServerSettingsManager::processUsernameFromIDRequestPacket(QSharedPoin // write the username to the packet usernameFromIDReplyPacket->writeString(verifiedUsername); + // Ship it! limitedNodeList->sendPacket(std::move(usernameFromIDReplyPacket), *sendingNode); } else { @@ -812,7 +817,7 @@ void DomainServerSettingsManager::processUsernameFromIDRequestPacket(QSharedPoin } } else { - // this isn't a UUID we can use + // This isn't a UUID we can use qWarning() << "Node username request received for invalid node ID. Refusing to process."; } diff --git a/interface/resources/qml/hifi/Pal.qml b/interface/resources/qml/hifi/Pal.qml index b1b3a00c27..62e7ba1571 100644 --- a/interface/resources/qml/hifi/Pal.qml +++ b/interface/resources/qml/hifi/Pal.qml @@ -72,17 +72,20 @@ Rectangle { table.selection.deselect(userIndex); } break; + // Received an "updateUsername()" request from the JS case 'updateUsername': + // The User ID (UUID) is the first parameter in the message. var userId = message.params[0]; + // The Username String (name + UUID) is the second parameter in the message. var userName = message.params[1]; - console.log('passed userId:', userId); - console.log('passed userName:', userName); + // If the userId is empty, we're updating "myData". if (!userId) { myData.userName = userName; myCard.userName = userName; } else { + // Get the index in userModel and userData associated with the passed UUID var userIndex = findSessionIndex(userId); - console.log('computed userIndex:', userIndex); + // Set the userName appropriately userModel.get(userIndex).userName = userName; userData[userIndex].userName = userName; } diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index 8dc408bf45..a984da1648 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -898,7 +898,7 @@ void NodeList::muteNodeBySessionID(const QUuid& nodeID) { void NodeList::requestUsernameFromSessionID(const QUuid& nodeID) { // send a request to domain-server to get the username associated with the given session ID - if (getThisNodeCanKick()) { + if (getThisNodeCanKick() || nodeID.isNull()) { // setup the packet auto usernameFromIDRequestPacket = NLPacket::create(PacketType::UsernameFromIDRequest, NUM_BYTES_RFC4122_UUID, true); @@ -909,7 +909,6 @@ void NodeList::requestUsernameFromSessionID(const QUuid& nodeID) { usernameFromIDRequestPacket->write(nodeID.toRfc4122()); } - qDebug() << "Sending packet to get username of node" << uuidStringWithoutCurlyBraces(nodeID); sendPacket(std::move(usernameFromIDRequestPacket), _domainHandler.getSockAddr()); @@ -928,5 +927,5 @@ void NodeList::processUsernameFromIDReply(QSharedPointer messag qDebug() << "Got username" << username << "for node" << nodeUUIDString; - emit usernameFromID(nodeUUIDString, username); + emit usernameFromIDReply(nodeUUIDString, username); } diff --git a/libraries/networking/src/NodeList.h b/libraries/networking/src/NodeList.h index 70b9ec5c27..d10c790f45 100644 --- a/libraries/networking/src/NodeList.h +++ b/libraries/networking/src/NodeList.h @@ -111,7 +111,7 @@ signals: void receivedDomainServerList(); void ignoredNode(const QUuid& nodeID); void ignoreRadiusEnabledChanged(bool isIgnored); - void usernameFromID(const QString& nodeID, const QString& username); + void usernameFromIDReply(const QString& nodeID, const QString& username); private slots: void stopKeepalivePingTimer(); diff --git a/libraries/script-engine/src/UsersScriptingInterface.cpp b/libraries/script-engine/src/UsersScriptingInterface.cpp index d774733cea..191952e354 100644 --- a/libraries/script-engine/src/UsersScriptingInterface.cpp +++ b/libraries/script-engine/src/UsersScriptingInterface.cpp @@ -18,7 +18,7 @@ UsersScriptingInterface::UsersScriptingInterface() { auto nodeList = DependencyManager::get(); connect(nodeList.data(), &LimitedNodeList::canKickChanged, this, &UsersScriptingInterface::canKickChanged); connect(nodeList.data(), &NodeList::ignoreRadiusEnabledChanged, this, &UsersScriptingInterface::ignoreRadiusEnabledChanged); - connect(nodeList.data(), &NodeList::usernameFromID, this, &UsersScriptingInterface::usernameFromID); + connect(nodeList.data(), &NodeList::usernameFromIDReply, this, &UsersScriptingInterface::usernameFromIDReply); } void UsersScriptingInterface::ignore(const QUuid& nodeID) { diff --git a/libraries/script-engine/src/UsersScriptingInterface.h b/libraries/script-engine/src/UsersScriptingInterface.h index 05d8c01b96..1936a2e914 100644 --- a/libraries/script-engine/src/UsersScriptingInterface.h +++ b/libraries/script-engine/src/UsersScriptingInterface.h @@ -104,7 +104,7 @@ signals: * Notifies scripts of the username associated with a UUID. * @function Users.enteredIgnoreRadius */ - void usernameFromID(const QString& nodeID, const QString& username); + void usernameFromIDReply(const QString& nodeID, const QString& username); }; diff --git a/scripts/system/pal.js b/scripts/system/pal.js index 0575a02abe..20f4167281 100644 --- a/scripts/system/pal.js +++ b/scripts/system/pal.js @@ -121,7 +121,10 @@ function populateUserList() { userName: '', sessionId: id || '' }; - if (Users.canKick) { + // If the current user is an admin OR + // they're requesting their own username ("id" is blank)... + if (Users.canKick || !id) { + // Request the username from the given UUID Users.requestUsernameFromID(id); } data.push(avatarPalDatum); @@ -133,14 +136,19 @@ function populateUserList() { pal.sendToQml({method: 'users', params: data}); } -function usernameFromID(id, username) { +// The function that handles the reply from the server +function usernameFromIDReply(id, username) { var data; + // If the ID we've received is our ID... if (AvatarList.getAvatar('').sessionUUID === id) { + // Set the data to contain specific strings. data = ['', username + ' (hidden)'] } else { + // Set the data to contain the ID and the username+ID concat string. data = [id, username + '/' + id]; } print('Username Data:', JSON.stringify(data)); + // Ship the data off to QML pal.sendToQml({ method: 'updateUsername', params: data }); } @@ -264,7 +272,7 @@ function onVisibileChanged() { button.clicked.connect(onClicked); pal.visibleChanged.connect(onVisibileChanged); pal.closed.connect(off); -Users.usernameFromID.connect(usernameFromID); +Users.usernameFromIDReply.connect(usernameFromIDReply); // // Cleanup. @@ -274,7 +282,7 @@ Script.scriptEnding.connect(function () { toolBar.removeButton(buttonName); pal.visibleChanged.disconnect(onVisibileChanged); pal.closed.disconnect(off); - Users.usernameFromID.disconnect(usernameFromID); + Users.usernameFromIDReply.disconnect(usernameFromIDReply); off(); });