diff options
author | Teravus Ovares | 2008-03-19 18:32:25 +0000 |
---|---|---|
committer | Teravus Ovares | 2008-03-19 18:32:25 +0000 |
commit | 8d5bcc9da11534302b36bca75ba715d9bb4029c9 (patch) | |
tree | a8d191b212399611a75811caf7a55bcdeaf5666c /OpenSim/Region | |
parent | * Patch to add llSetLinkPrimitiveParams stub (diff) | |
download | opensim-SC-8d5bcc9da11534302b36bca75ba715d9bb4029c9.zip opensim-SC-8d5bcc9da11534302b36bca75ba715d9bb4029c9.tar.gz opensim-SC-8d5bcc9da11534302b36bca75ba715d9bb4029c9.tar.bz2 opensim-SC-8d5bcc9da11534302b36bca75ba715d9bb4029c9.tar.xz |
* Fix for if 782: Locked prims may still be moved by click+drag.
* Remember, your admin user and estate managers can move locked objects that are not owned by them. That functionality differs from the Linden way of thinking and it's by design! It is not a bug! Create a non-god user and use that as your normal account.
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/Environment/PermissionManager.cs | 34 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/InnerScene.cs | 2 |
2 files changed, 35 insertions, 1 deletions
diff --git a/OpenSim/Region/Environment/PermissionManager.cs b/OpenSim/Region/Environment/PermissionManager.cs index 3d008a7..a6acca7 100644 --- a/OpenSim/Region/Environment/PermissionManager.cs +++ b/OpenSim/Region/Environment/PermissionManager.cs | |||
@@ -405,6 +405,40 @@ namespace OpenSim.Region.Environment | |||
405 | permission = false; | 405 | permission = false; |
406 | 406 | ||
407 | } | 407 | } |
408 | else | ||
409 | { | ||
410 | bool locked = false; | ||
411 | if (!m_scene.Entities.ContainsKey(obj)) | ||
412 | { | ||
413 | return false; | ||
414 | } | ||
415 | |||
416 | // If it's not an object, we cant edit it. | ||
417 | if ((!(m_scene.Entities[obj] is SceneObjectGroup))) | ||
418 | { | ||
419 | return false; | ||
420 | } | ||
421 | |||
422 | |||
423 | SceneObjectGroup group = (SceneObjectGroup)m_scene.Entities[obj]; | ||
424 | |||
425 | LLUUID objectOwner = group.OwnerID; | ||
426 | locked = ((group.RootPart.OwnerMask & PERM_LOCKED) == 0); | ||
427 | |||
428 | |||
429 | // This is an exception to the generic object permission. | ||
430 | // Administrators who lock their objects should not be able to move them, | ||
431 | // however generic object permission should return true. | ||
432 | // This keeps locked objects from being affected by random click + drag actions by accident | ||
433 | // and allows the administrator to grab or delete a locked object. | ||
434 | |||
435 | // Administrators and estate managers are still able to click+grab locked objects not | ||
436 | // owned by them in the scene | ||
437 | // This is by design. | ||
438 | |||
439 | if (locked && (user == objectOwner)) | ||
440 | return false; | ||
441 | } | ||
408 | return permission; | 442 | return permission; |
409 | } | 443 | } |
410 | 444 | ||
diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs index a041a52..f37d28a 100644 --- a/OpenSim/Region/Environment/Scenes/InnerScene.cs +++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs | |||
@@ -998,7 +998,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
998 | SceneObjectGroup group = GetGroupByPrim(objectID); | 998 | SceneObjectGroup group = GetGroupByPrim(objectID); |
999 | if (group != null) | 999 | if (group != null) |
1000 | { | 1000 | { |
1001 | if (PermissionsMngr.CanEditObjectPosition(remoteClient.AgentId, group.UUID)) | 1001 | if (PermissionsMngr.CanEditObjectPosition(remoteClient.AgentId, group.UUID))// && PermissionsMngr.) |
1002 | { | 1002 | { |
1003 | group.GrabMovement(offset, pos, remoteClient); | 1003 | group.GrabMovement(offset, pos, remoteClient); |
1004 | } | 1004 | } |