Fix problem with dragging child part inventory item to user inventory.

This fixes the problem by fixing the permissions module to look at root part permissions rather than having to do this for every caller.
Resolves http://opensimulator.org/mantis/view.php?id=5569
xassetservice
Justin Clark-Casey (justincc) 2012-02-21 22:54:30 +00:00
parent 76f411147d
commit 5397a6d4c6
2 changed files with 4 additions and 30 deletions

View File

@ -677,18 +677,12 @@ namespace OpenSim.Region.CoreModules.World.Permissions
bool permission = false; bool permission = false;
bool locked = false; bool locked = false;
if (!m_scene.Entities.ContainsKey(objId)) SceneObjectPart part = m_scene.GetSceneObjectPart(objId);
{
return false;
}
// If it's not an object, we cant edit it. if (part == null)
if ((!(m_scene.Entities[objId] is SceneObjectGroup)))
{
return false; return false;
}
SceneObjectGroup group = (SceneObjectGroup)m_scene.Entities[objId]; SceneObjectGroup group = part.ParentGroup;
UUID objectOwner = group.OwnerID; UUID objectOwner = group.OwnerID;
locked = ((group.RootPart.OwnerMask & PERM_LOCKED) == 0); locked = ((group.RootPart.OwnerMask & PERM_LOCKED) == 0);
@ -977,16 +971,6 @@ namespace OpenSim.Region.CoreModules.World.Permissions
DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name);
if (m_bypassPermissions) return m_bypassPermissionsValue; if (m_bypassPermissions) return m_bypassPermissionsValue;
SceneObjectPart part = m_scene.GetSceneObjectPart(objectID);
// If we selected a sub-prim to edit, the objectID won't represent the object, but only a part.
// We have to check the permissions of the group, though.
if (part.ParentID != 0)
{
objectID = part.ParentUUID;
part = m_scene.GetSceneObjectPart(objectID);
}
return GenericObjectPermission(editorID, objectID, false); return GenericObjectPermission(editorID, objectID, false);
} }

View File

@ -1146,17 +1146,7 @@ namespace OpenSim.Region.Framework.Scenes
TaskInventoryItem taskItem = part.Inventory.GetInventoryItem(itemId); TaskInventoryItem taskItem = part.Inventory.GetInventoryItem(itemId);
if (null == taskItem) if ((taskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0)
{
m_log.WarnFormat("[PRIM INVENTORY]: Move of inventory item {0} from prim with local id {1} failed"
+ " because the inventory item could not be found",
itemId, primLocalId);
return;
}
TaskInventoryItem item = part.Inventory.GetInventoryItem(itemId);
if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0)
{ {
// If the item to be moved is no copy, we need to be able to // If the item to be moved is no copy, we need to be able to
// edit the prim. // edit the prim.