From 5699bb2e64766da634ca4be34bc2d8eab991f2e1 Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Wed, 15 Aug 2007 14:10:26 +0000 Subject: * Permissions! - You can now only perform certain functions (such as editing other peoples objects) if you have permission to do so. * Moved OnPermissionError to EventManager - now triggers a standard blue alert. * Terraforming now requires permission via the permissions manager. [Defaults to admin-only] * Permissions manager is now substantiated in Scene * Buttload of new permissions added. * Estate manager operations now require various levels of permission to operate * OGS1 now produces 'summary reports' for a commsManager of each scene it maintains connections for. Reduces grid network traffic for ping checks. * Added new "permissions true" / "permissions false" console command to enable or disable permissions. --- .../Environment/Scenes/Scene.PacketHandlers.cs | 42 ++++++++++++++-------- 1 file changed, 27 insertions(+), 15 deletions(-) (limited to 'OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs') diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs index bba0138..cca8998 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs @@ -50,6 +50,12 @@ namespace OpenSim.Region.Environment.Scenes /// Distance from the west border where the cursor is located public void ModifyTerrain(float height, float seconds, byte brushsize, byte action, float north, float west, IClientAPI remoteUser) { + // Do a permissions check before allowing terraforming. + // random users are now no longer allowed to terraform + // if permissions are enabled. + if (!PermissionsMngr.CanTerraform(remoteUser.AgentId, new LLVector3(north, west, 0))) + return; + // Shiny. double size = (double)(1 << brushsize); @@ -240,15 +246,18 @@ namespace OpenSim.Region.Environment.Scenes } if (selectedEnt != null) { - List avatars = this.RequestAvatarList(); - foreach (ScenePresence avatar in avatars) - { - avatar.ControllingClient.SendKillObject(this.m_regionHandle, selectedEnt.LocalId); - } - - lock (Entities) + if (PermissionsMngr.CanDeRezObject(simClient.AgentId, selectedEnt.m_uuid)) { - Entities.Remove(selectedEnt.m_uuid); + List avatars = this.RequestAvatarList(); + foreach (ScenePresence avatar in avatars) + { + avatar.ControllingClient.SendKillObject(this.m_regionHandle, selectedEnt.LocalId); + } + + lock (Entities) + { + Entities.Remove(selectedEnt.m_uuid); + } } } } @@ -501,16 +510,19 @@ namespace OpenSim.Region.Environment.Scenes public void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 pos, IClientAPI remoteClient) { - bool hasPrim = false; - foreach (EntityBase ent in Entities.Values) + if (PermissionsMngr.CanEditObject(remoteClient.AgentId, objectID)) { - if (ent is SceneObjectGroup) + bool hasPrim = false; + foreach (EntityBase ent in Entities.Values) { - hasPrim = ((SceneObjectGroup)ent).HasChildPrim(objectID); - if (hasPrim != false) + if (ent is SceneObjectGroup) { - ((SceneObjectGroup)ent).GrabMovement(offset, pos, remoteClient); - break; + hasPrim = ((SceneObjectGroup)ent).HasChildPrim(objectID); + if (hasPrim != false) + { + ((SceneObjectGroup)ent).GrabMovement(offset, pos, remoteClient); + break; + } } } } -- cgit v1.1