mirror of
https://github.com/opensim/opensim.git
synced 2026-08-10 03:06:05 +08:00
merge fix
This commit is contained in:
@@ -1182,7 +1182,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||
}
|
||||
|
||||
rootPart.TrimPermissions();
|
||||
so.AggregateDeepPerms();
|
||||
so.InvalidateDeepEffectivePerms();
|
||||
|
||||
if (isAttachment)
|
||||
so.FromItemID = item.ID;
|
||||
|
||||
@@ -146,7 +146,7 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell
|
||||
child.TriggerScriptChangedEvent(Changed.OWNER);
|
||||
child.ApplyNextOwnerPermissions();
|
||||
}
|
||||
group.AggregatePerms();
|
||||
group.InvalidateDeepEffectivePerms();
|
||||
}
|
||||
|
||||
part.ObjectSaleType = 0;
|
||||
|
||||
@@ -293,6 +293,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
||||
scenePermissions.OnDeleteObject += CanDeleteObject;
|
||||
scenePermissions.OnEditObjectByIDs += CanEditObjectByIDs;
|
||||
scenePermissions.OnEditObject += CanEditObject;
|
||||
scenePermissions.OnEditObjectPerms += CanEditObjectPerms;
|
||||
scenePermissions.OnInventoryTransfer += CanInventoryTransfer;
|
||||
scenePermissions.OnMoveObject += CanMoveObject;
|
||||
scenePermissions.OnTakeObject += CanTakeObject;
|
||||
@@ -391,6 +392,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
||||
scenePermissions.OnDeleteObject -= CanDeleteObject;
|
||||
scenePermissions.OnEditObjectByIDs -= CanEditObjectByIDs;
|
||||
scenePermissions.OnEditObject -= CanEditObject;
|
||||
scenePermissions.OnEditObjectPerms -= CanEditObjectPerms;
|
||||
scenePermissions.OnInventoryTransfer -= CanInventoryTransfer;
|
||||
scenePermissions.OnMoveObject -= CanMoveObject;
|
||||
scenePermissions.OnTakeObject -= CanTakeObject;
|
||||
@@ -1387,6 +1389,35 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool CanEditObjectPerms(SceneObjectGroup sog, UUID userID)
|
||||
{
|
||||
DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name);
|
||||
if (m_bypassPermissions) return m_bypassPermissionsValue;
|
||||
|
||||
if (sog == null)
|
||||
return false;
|
||||
|
||||
if(sog.OwnerID == userID || IsAdministrator(userID))
|
||||
return true;
|
||||
|
||||
UUID sogGroupID = sog.GroupID;
|
||||
if(sogGroupID == UUID.Zero || sogGroupID != sog.OwnerID)
|
||||
return false;
|
||||
|
||||
uint perms = sog.EffectiveOwnerPerms;
|
||||
if((perms & (uint)PermissionMask.Modify) == 0)
|
||||
return false;
|
||||
|
||||
ulong powers = 0;
|
||||
if(GroupMemberPowers(sogGroupID, userID, ref powers))
|
||||
{
|
||||
if((powers & (ulong)GroupPowers.ObjectManipulate) != 0)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private bool CanEditObjectInventory(UUID objectID, UUID userID)
|
||||
{
|
||||
DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name);
|
||||
@@ -1678,7 +1709,6 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
private bool CanReturnObjects(ILandObject land, ScenePresence sp, List<SceneObjectGroup> objects)
|
||||
{
|
||||
DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name);
|
||||
@@ -2289,23 +2319,31 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
||||
if (sog == null)
|
||||
return false;
|
||||
|
||||
uint perms = GetObjectPermissions(userID, sog, true);
|
||||
if((perms & (uint)PermissionMask.Modify) == 0)
|
||||
if(sog.OwnerID == userID || IsAdministrator(userID))
|
||||
return true;
|
||||
|
||||
if(sog.IsAttachment)
|
||||
return false;
|
||||
|
||||
UUID sogGroupID = sog.GroupID;
|
||||
|
||||
if(sogGroupID == UUID.Zero || sogGroupID != sog.OwnerID)
|
||||
return false;
|
||||
|
||||
TaskInventoryItem ti = part.Inventory.GetInventoryItem(itemID);
|
||||
if(ti == null)
|
||||
return false;
|
||||
|
||||
uint itperms = GetObjectItemPermissions(userID, ti);
|
||||
ulong powers = 0;
|
||||
if(GroupMemberPowers(sogGroupID, userID, ref powers))
|
||||
{
|
||||
if((powers & (ulong)GroupPowers.ObjectManipulate) != 0)
|
||||
return true;
|
||||
|
||||
if((itperms & (uint)PermissionMask.Copy) == 0)
|
||||
return false;
|
||||
|
||||
if(sog.OwnerID != userID && (itperms & (uint)PermissionMask.Transfer) == 0)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
if((ti.EveryonePermissions & (uint)PermissionMask.Copy) != 0)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// object inventory to object inventory item drag and drop
|
||||
|
||||
@@ -107,7 +107,7 @@ namespace OpenSim.Region.CoreModules.World.Vegetation
|
||||
|
||||
sceneObject.SetGroup(groupID, null);
|
||||
m_scene.AddNewSceneObject(sceneObject, true);
|
||||
sceneObject.AggregatePerms();
|
||||
sceneObject.InvalidateDeepEffectivePerms();
|
||||
|
||||
return sceneObject;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user