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;
}
}
}