From 04117d9f75ca278a921be9ce09c8c859f81cd428 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 29 Apr 2017 19:07:04 +0100 Subject: recover PermissionsUtil.ApplyFoldedPermissions (well my version). its use easys code readability --- .../Framework/InventoryAccess/InventoryAccessModule.cs | 17 +++++++---------- .../CoreModules/World/Objects/BuySell/BuySellModule.cs | 18 ++++++------------ OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 12 +++++++----- 3 files changed, 20 insertions(+), 27 deletions(-) (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index d916cc2..bce0610 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -573,7 +573,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess InventoryItemBase item, SceneObjectGroup so, List objsForEffectivePermissions, IClientAPI remoteClient) { - uint effectivePerms = (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify | PermissionMask.Move | PermissionMask.Export) | 7; + uint effectivePerms = (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify | PermissionMask.Move | PermissionMask.Export | PermissionMask.FoldedMask); // For the porposes of inventory, an object is modify if the prims // are modify. This allows renaming an object that contains no @@ -586,19 +586,16 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess effectivePerms &= groupPerms; } - effectivePerms |= (uint)PermissionMask.Move; - + if (remoteClient != null && (remoteClient.AgentId != so.RootPart.OwnerID) && m_Scene.Permissions.PropagatePermissions()) { - if ((effectivePerms & (uint)PermissionMask.FoldedCopy) == 0) - effectivePerms &= ~(uint)PermissionMask.Copy; - if ((effectivePerms & (uint)PermissionMask.FoldedTransfer) == 0) - effectivePerms &= ~(uint)PermissionMask.Transfer; - if ((effectivePerms & (uint)PermissionMask.FoldedExport) == 0) - effectivePerms &= ~(uint)PermissionMask.Export; - + PermissionsUtil.ApplyNoModFoldedPermissions(effectivePerms, ref effectivePerms); + uint basePerms = effectivePerms & so.RootPart.NextOwnerMask; + // rebuild folded perms since we don't have then on inworld objects + // possible existent ones where already unfolded + if((basePerms & (uint)PermissionMask.Copy) == 0) basePerms |= (uint)PermissionMask.Transfer; diff --git a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs index f90285d..84f33d1 100644 --- a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs +++ b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs @@ -208,19 +208,13 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell perms = group.GetEffectivePermissions(false); -// if((perms & (uint)PermissionMask.FoldedMask) != 0) - { - if ((perms & (uint)PermissionMask.FoldedCopy) == 0) - perms &= ~(uint)PermissionMask.Copy; - if ((perms & (uint)PermissionMask.FoldedTransfer) == 0) - perms &= ~(uint)PermissionMask.Transfer; - if ((perms & (uint)PermissionMask.FoldedModify) == 0) - perms &= ~(uint)PermissionMask.Modify; - if ((perms & (uint)PermissionMask.FoldedExport) == 0) - perms &= ~(uint)PermissionMask.Export; - } + PermissionsUtil.ApplyFoldedPermissions(perms, ref perms); + item.BasePermissions = perms & part.NextOwnerMask; - item.CurrentPermissions = perms & part.NextOwnerMask; + +// we need to rebuild folded here + + item.CurrentPermissions = item.BasePermissions; item.NextPermissions = part.NextOwnerMask; item.EveryOnePermissions = part.EveryoneMask & part.NextOwnerMask; diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index a6f6aa3..5e19a8a 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -1267,17 +1267,19 @@ namespace OpenSim.Region.Framework.Scenes // TODO: Fix this after the inventory fixer exists and has beenr run if ((part.OwnerID != destAgent) && Permissions.PropagatePermissions()) { - agentItem.BasePermissions = taskItem.BasePermissions & (taskItem.NextPermissions | (uint)PermissionMask.Move); + agentItem.BasePermissions = taskItem.BasePermissions & taskItem.NextPermissions; if (taskItem.InvType == (int)InventoryType.Object) { - if((taskItem.CurrentPermissions & (uint)PermissionMask.FoldedMask) != 0) - agentItem.BasePermissions &= - (((taskItem.CurrentPermissions & (uint)PermissionMask.FoldedMask ) << (int)PermissionMask.FoldingShift) | - (taskItem.CurrentPermissions & (uint)PermissionMask.Move)); + uint perms = agentItem.BasePermissions; + PermissionsUtil.ApplyFoldedPermissions(taskItem.CurrentPermissions, ref perms ); + agentItem.BasePermissions = perms; } else agentItem.BasePermissions &= taskItem.CurrentPermissions; + // always unlock + agentItem.BasePermissions |= (uint)PermissionMask.Move; + agentItem.CurrentPermissions = agentItem.BasePermissions; agentItem.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm; -- cgit v1.1