diff options
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Permissions')
-rw-r--r-- | OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs index 4c4a8a5..45c1c56 100644 --- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs | |||
@@ -293,6 +293,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
293 | scenePermissions.OnDeleteObject += CanDeleteObject; | 293 | scenePermissions.OnDeleteObject += CanDeleteObject; |
294 | scenePermissions.OnEditObjectByIDs += CanEditObjectByIDs; | 294 | scenePermissions.OnEditObjectByIDs += CanEditObjectByIDs; |
295 | scenePermissions.OnEditObject += CanEditObject; | 295 | scenePermissions.OnEditObject += CanEditObject; |
296 | scenePermissions.OnEditObjectPerms += CanEditObjectPerms; | ||
296 | scenePermissions.OnInventoryTransfer += CanInventoryTransfer; | 297 | scenePermissions.OnInventoryTransfer += CanInventoryTransfer; |
297 | scenePermissions.OnMoveObject += CanMoveObject; | 298 | scenePermissions.OnMoveObject += CanMoveObject; |
298 | scenePermissions.OnTakeObject += CanTakeObject; | 299 | scenePermissions.OnTakeObject += CanTakeObject; |
@@ -391,6 +392,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
391 | scenePermissions.OnDeleteObject -= CanDeleteObject; | 392 | scenePermissions.OnDeleteObject -= CanDeleteObject; |
392 | scenePermissions.OnEditObjectByIDs -= CanEditObjectByIDs; | 393 | scenePermissions.OnEditObjectByIDs -= CanEditObjectByIDs; |
393 | scenePermissions.OnEditObject -= CanEditObject; | 394 | scenePermissions.OnEditObject -= CanEditObject; |
395 | scenePermissions.OnEditObjectPerms -= CanEditObjectPerms; | ||
394 | scenePermissions.OnInventoryTransfer -= CanInventoryTransfer; | 396 | scenePermissions.OnInventoryTransfer -= CanInventoryTransfer; |
395 | scenePermissions.OnMoveObject -= CanMoveObject; | 397 | scenePermissions.OnMoveObject -= CanMoveObject; |
396 | scenePermissions.OnTakeObject -= CanTakeObject; | 398 | scenePermissions.OnTakeObject -= CanTakeObject; |
@@ -1387,6 +1389,35 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1387 | return true; | 1389 | return true; |
1388 | } | 1390 | } |
1389 | 1391 | ||
1392 | private bool CanEditObjectPerms(SceneObjectGroup sog, UUID userID) | ||
1393 | { | ||
1394 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | ||
1395 | if (m_bypassPermissions) return m_bypassPermissionsValue; | ||
1396 | |||
1397 | if (sog == null) | ||
1398 | return false; | ||
1399 | |||
1400 | if(sog.OwnerID == userID || IsAdministrator(userID)) | ||
1401 | return true; | ||
1402 | |||
1403 | UUID sogGroupID = sog.GroupID; | ||
1404 | if(sogGroupID == UUID.Zero || sogGroupID != sog.OwnerID) | ||
1405 | return false; | ||
1406 | |||
1407 | uint perms = sog.EffectiveOwnerPerms; | ||
1408 | if((perms & (uint)PermissionMask.Modify) == 0) | ||
1409 | return false; | ||
1410 | |||
1411 | ulong powers = 0; | ||
1412 | if(GroupMemberPowers(sogGroupID, userID, ref powers)) | ||
1413 | { | ||
1414 | if((powers & (ulong)GroupPowers.ObjectManipulate) != 0) | ||
1415 | return true; | ||
1416 | } | ||
1417 | |||
1418 | return false; | ||
1419 | } | ||
1420 | |||
1390 | private bool CanEditObjectInventory(UUID objectID, UUID userID) | 1421 | private bool CanEditObjectInventory(UUID objectID, UUID userID) |
1391 | { | 1422 | { |
1392 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1423 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
@@ -2306,7 +2337,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
2306 | ulong powers = 0; | 2337 | ulong powers = 0; |
2307 | if(GroupMemberPowers(sogGroupID, userID, ref powers)) | 2338 | if(GroupMemberPowers(sogGroupID, userID, ref powers)) |
2308 | { | 2339 | { |
2309 | if(powers == (ulong)GroupPowers.ObjectManipulate) | 2340 | if((powers & (ulong)GroupPowers.ObjectManipulate) != 0) |
2310 | return true; | 2341 | return true; |
2311 | 2342 | ||
2312 | if((ti.EveryonePermissions & (uint)PermissionMask.Copy) != 0) | 2343 | if((ti.EveryonePermissions & (uint)PermissionMask.Copy) != 0) |