From ba4e13ef55c378db13b6aa97316e99d651762a02 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Fri, 28 Apr 2017 20:03:44 +0100 Subject: a few changes to permissions folding... we are testing. at this point only use master for TESTING also --- .../InventoryAccess/InventoryAccessModule.cs | 35 ++++++++++++---------- 1 file changed, 20 insertions(+), 15 deletions(-) (limited to 'OpenSim/Region/CoreModules/Framework') diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 67c847b..eb7211c 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -574,8 +574,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess IClientAPI remoteClient) { uint effectivePerms = (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify | PermissionMask.Move | PermissionMask.Export) | 7; - uint allObjectsNextOwnerPerms = 0x7fffffff; - + // For the porposes of inventory, an object is modify if the prims // are modify. This allows renaming an object that contains no // mod items. @@ -591,21 +590,27 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess if (remoteClient != null && (remoteClient.AgentId != so.RootPart.OwnerID) && m_Scene.Permissions.PropagatePermissions()) { - uint perms = effectivePerms; - uint nextPerms = (perms & 7) << 13; - if ((nextPerms & (uint)PermissionMask.Copy) == 0) - perms &= ~(uint)PermissionMask.Copy; - if ((nextPerms & (uint)PermissionMask.Transfer) == 0) - perms &= ~(uint)PermissionMask.Transfer; - if ((nextPerms & (uint)PermissionMask.Modify) == 0) - perms &= ~(uint)PermissionMask.Modify; + 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; -// item.BasePermissions = perms & so.RootPart.NextOwnerMask; + uint basePerms = effectivePerms & so.RootPart.NextOwnerMask; - uint nextp = so.RootPart.NextOwnerMask | (uint)PermissionMask.FoldedMask; - item.BasePermissions = perms & nextp; + if((basePerms & (uint)PermissionMask.Copy) == 0) + basePerms |= (uint)PermissionMask.Transfer; + + // unlock + basePerms |= (uint)PermissionMask.Move; + + basePerms &= ~(uint)PermissionMask.FoldedMask; + basePerms |= ((basePerms >> (int)PermissionMask.FoldingShift) & (uint)PermissionMask.FoldedMask); + + item.BasePermissions = basePerms; item.CurrentPermissions = item.BasePermissions; - item.NextPermissions = perms & so.RootPart.NextOwnerMask; + item.NextPermissions = effectivePerms & so.RootPart.NextOwnerMask; item.EveryOnePermissions = so.RootPart.EveryoneMask & so.RootPart.NextOwnerMask; item.GroupPermissions = so.RootPart.GroupMask & so.RootPart.NextOwnerMask; @@ -626,7 +631,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess (uint)PermissionMask.Modify | (uint)PermissionMask.Move | (uint)PermissionMask.Export | - 7); // Preserve folded permissions + (uint)PermissionMask.FoldedMask); // Preserve folded permissions ?? } return item; -- cgit v1.1