From 11134072806f43ddd35fe2a70331a4877ab1b38f Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 17 Jan 2017 01:22:44 +0000 Subject: [PATCH] add more calls to effective permissions aggregation; do not change groupmask on deed --- .../InventoryAccess/InventoryAccessModule.cs | 2 ++ OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 11 +++++++++-- OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 3 +++ .../Framework/Scenes/SceneObjectPartInventory.cs | 1 + 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index b37744d8ae..6783ce0eda 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -1180,6 +1180,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess part.NextOwnerMask = item.NextPermissions & part.BaseMask; } } + } } else @@ -1198,6 +1199,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess } rootPart.TrimPermissions(); + so.AggregateDeepPerms(); if (isAttachment) so.FromItemID = item.ID; diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index ea100ae75f..c91327192b 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -2754,9 +2754,16 @@ namespace OpenSim.Region.Framework.Scenes continue; sog.SetOwnerId(groupID); - // Make the group mask be the previous owner mask - sog.RootPart.GroupMask = sog.RootPart.OwnerMask; + + // this is wrong, GroupMask is used for group sharing, still possible to set + // this whould give owner rights to users that are member of group but don't have role powers to edit +// sog.RootPart.GroupMask = sog.RootPart.OwnerMask; + + // we should keep all permissions on deed to group + // and with this comented code, if user does not set next permissions on the object + // and on ALL contents of ALL prims, he may loose rights, making the object useless sog.ApplyNextOwnerPermissions(); + sog.AggregatePerms(); sog.ScheduleGroupForFullUpdate(); diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 639c8dd881..033170d2f2 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -2764,7 +2764,10 @@ namespace OpenSim.Region.Framework.Scenes { // Apply Next Owner Permissions if we're not bypassing permissions if (!m_scene.Permissions.BypassPermissions()) + { ApplyNextOwnerPermissions(); + AggregatePerms(); + } } rpart.ScheduleFullUpdate(); diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index 4dd8eb1262..29d9f08259 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs @@ -980,6 +980,7 @@ namespace OpenSim.Region.Framework.Scenes } // old code end rootPart.TrimPermissions(); + group.AggregateDeepPerms(); } return true;