From d53b5289942dbf374b30898cbb81e6ac3e75da25 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Mon, 6 May 2019 13:38:09 -0700 Subject: [PATCH] Some fixes - i don't think this code is complete --- .../resources/describe-settings.json | 14 ++++---- .../entities/src/EntityEditPacketSender.cpp | 4 +++ libraries/entities/src/EntityItem.cpp | 7 ++-- libraries/entities/src/EntityTree.cpp | 32 ++++++++----------- 4 files changed, 30 insertions(+), 27 deletions(-) diff --git a/domain-server/resources/describe-settings.json b/domain-server/resources/describe-settings.json index 55a6d3f645..d3a550b801 100644 --- a/domain-server/resources/describe-settings.json +++ b/domain-server/resources/describe-settings.json @@ -234,7 +234,7 @@ }, { "label": "Permissions ?", - "span": 10 + "span": 11 } ], "columns": [ @@ -370,7 +370,7 @@ }, { "label": "Permissions ?", - "span": 10 + "span": 11 } ], "columns": [ @@ -498,7 +498,7 @@ }, { "label": "Permissions ?", - "span": 10 + "span": 11 } ], "columns": [ @@ -619,7 +619,7 @@ }, { "label": "Permissions ?", - "span": 10 + "span": 11 } ], "columns": [ @@ -718,7 +718,7 @@ }, { "label": "Permissions ?", - "span": 10 + "span": 11 } ], "columns": [ @@ -817,7 +817,7 @@ }, { "label": "Permissions ?", - "span": 10 + "span": 11 } ], "columns": [ @@ -916,7 +916,7 @@ }, { "label": "Permissions ?", - "span": 10 + "span": 11 } ], "columns": [ diff --git a/libraries/entities/src/EntityEditPacketSender.cpp b/libraries/entities/src/EntityEditPacketSender.cpp index 0491bdedae..dbb3ab076e 100644 --- a/libraries/entities/src/EntityEditPacketSender.cpp +++ b/libraries/entities/src/EntityEditPacketSender.cpp @@ -110,6 +110,10 @@ void EntityEditPacketSender::queueEditEntityMessage(PacketType type, EntityPropertyFlags requestedProperties = propertiesCopy.getChangedProperties(); + if (!nodeList->getThisNodeCanGetAndSetPrivateUserData() && requestedProperties.getHasProperty(PROP_PRIVATE_USER_DATA)) { + requestedProperties -= PROP_PRIVATE_USER_DATA; + } + while (encodeResult == OctreeElement::PARTIAL) { encodeResult = EntityItemProperties::encodeEntityEditPacket(type, entityItemID, propertiesCopy, bufferOut, requestedProperties, didntFitProperties); diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index dc871e655f..148ea35133 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -86,6 +86,7 @@ EntityPropertyFlags EntityItem::getEntityProperties(EncodeBitstreamParams& param requestedProperties += PROP_NAME; requestedProperties += PROP_LOCKED; requestedProperties += PROP_USER_DATA; + requestedProperties += PROP_PRIVATE_USER_DATA; requestedProperties += PROP_HREF; requestedProperties += PROP_DESCRIPTION; requestedProperties += PROP_POSITION; @@ -266,8 +267,8 @@ OctreeElement::AppendState EntityItem::appendEntityData(OctreePacketData* packet APPEND_ENTITY_PROPERTY(PROP_SIMULATION_OWNER, _simulationOwner.toByteArray()); // convert AVATAR_SELF_ID to actual sessionUUID. QUuid actualParentID = getParentID(); + auto nodeList = DependencyManager::get(); if (actualParentID == AVATAR_SELF_ID) { - auto nodeList = DependencyManager::get(); actualParentID = nodeList->getSessionUUID(); } APPEND_ENTITY_PROPERTY(PROP_PARENT_ID, actualParentID); @@ -276,7 +277,9 @@ OctreeElement::AppendState EntityItem::appendEntityData(OctreePacketData* packet APPEND_ENTITY_PROPERTY(PROP_NAME, getName()); APPEND_ENTITY_PROPERTY(PROP_LOCKED, getLocked()); APPEND_ENTITY_PROPERTY(PROP_USER_DATA, getUserData()); - APPEND_ENTITY_PROPERTY(PROP_PRIVATE_USER_DATA, getPrivateUserData()); + if (nodeList->getThisNodeCanGetAndSetPrivateUserData()) { + APPEND_ENTITY_PROPERTY(PROP_PRIVATE_USER_DATA, getPrivateUserData()); + } APPEND_ENTITY_PROPERTY(PROP_HREF, getHref()); APPEND_ENTITY_PROPERTY(PROP_DESCRIPTION, getDescription()); APPEND_ENTITY_PROPERTY(PROP_POSITION, getLocalPosition()); diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index 260d044693..cc4f526646 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -1869,26 +1869,22 @@ int EntityTree::processEditPacketData(ReceivedMessage& message, const unsigned c } } } + } - if (!properties.getPrivateUserData().isEmpty()) { - if (!senderNode->getCanGetAndSetPrivateUserData()) { - if (wantEditLogging()) { - qCDebug(entities) << "User [" << senderNode->getUUID() - << "] is attempting to set private user data but user isn't allowed; edit rejected..."; - } + if (!properties.getPrivateUserData().isEmpty() && validEditPacket) { + if (!senderNode->getCanGetAndSetPrivateUserData()) { + if (wantEditLogging()) { + qCDebug(entities) << "User [" << senderNode->getUUID() + << "] is attempting to set private user data but user isn't allowed; edit rejected..."; + } - // If this was an add, we also want to tell the client that sent this edit that the entity was not added. - if (isAdd) { - // Make sure we didn't already need to send back a delete because the client script failed - // the whitelist check - if (!wasDeletedBecauseOfClientScript) { - QWriteLocker locker(&_recentlyDeletedEntitiesLock); - _recentlyDeletedEntityItemIDs.insert(usecTimestampNow(), entityItemID); - validEditPacket = false; - } - } else { - suppressDisallowedPrivateUserData = true; - } + // If this was an add, we also want to tell the client that sent this edit that the entity was not added. + if (isAdd) { + QWriteLocker locker(&_recentlyDeletedEntitiesLock); + _recentlyDeletedEntityItemIDs.insert(usecTimestampNow(), entityItemID); + validEditPacket = false; + } else { + suppressDisallowedPrivateUserData = true; } } }