aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Environment/PermissionManager.cs34
-rw-r--r--OpenSim/Region/Environment/Scenes/InnerScene.cs2
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 }