aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/PermissionManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/PermissionManager.cs')
-rw-r--r--OpenSim/Region/Environment/PermissionManager.cs34
1 files changed, 34 insertions, 0 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