*Complete redo of the permissions module

*Removed hardcoded permissions checks
*Added permissions checks where needed
This commit is contained in:
mingchen
2008-05-13 16:22:57 +00:00
parent 8293be6811
commit 32785921d0
15 changed files with 887 additions and 641 deletions

View File

@@ -988,17 +988,28 @@ namespace OpenSim.Region.Environment.Scenes
}
if (selectedEnt != null)
{
bool permission;
if (DeRezPacket.AgentBlock.Destination == 1)
{ // Take Copy
permission = ExternalChecks.ExternalChecksCanTakeObject(((SceneObjectGroup)selectedEnt).UUID, remoteClient.AgentId);
bool permissionToTake = false;
bool permissionToDelete = false;
if (DeRezPacket.AgentBlock.Destination == 1)// Take Copy
{
permissionToTake = ExternalChecks.ExternalChecksCanTakeCopyObject(((SceneObjectGroup)selectedEnt).UUID, remoteClient.AgentId);
permissionToDelete = false; //Just taking copy!
}
else
{ // Take
permission = ExternalChecks.ExternalChecksCanTakeObject(((SceneObjectGroup)selectedEnt).UUID, remoteClient.AgentId);
else if(DeRezPacket.AgentBlock.Destination == 4) //Take
{
// Take
permissionToTake = ExternalChecks.ExternalChecksCanTakeObject(((SceneObjectGroup)selectedEnt).UUID, remoteClient.AgentId);
permissionToDelete = permissionToTake; //If they can take, they can delete!
}
if (permission)
else if (DeRezPacket.AgentBlock.Destination == 6) //Delete
{
permissionToTake = false;
permissionToDelete = ExternalChecks.ExternalChecksCanDeleteObject(((SceneObjectGroup)selectedEnt).UUID, remoteClient.AgentId);
}
if (permissionToTake)
{
SceneObjectGroup objectGroup = (SceneObjectGroup) selectedEnt;
string sceneObjectXml = objectGroup.ToXmlString();
@@ -1044,8 +1055,7 @@ namespace OpenSim.Region.Environment.Scenes
remoteClient.SendInventoryItemCreateUpdate(item);
}
// FIXME: Nasty hardcoding. If Destination is 1 then client wants us to take a copy
if (DeRezPacket.AgentBlock.Destination != 1)
if (permissionToDelete)
{
DeleteSceneObjectGroup(objectGroup);
}