Refactor script create permission into the perms module

avinationmerge
Melanie 2010-09-21 02:08:55 +02:00
parent 9cf8795ecf
commit 7229bc4fbd
2 changed files with 23 additions and 15 deletions

View File

@ -1780,10 +1780,28 @@ namespace OpenSim.Region.CoreModules.World.Permissions
DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name);
if (m_bypassPermissions) return m_bypassPermissionsValue;
if ((int)InventoryType.LSL == invType)
if (m_allowedScriptCreators == UserSet.Administrators && !IsAdministrator(userID))
SceneObjectPart part = scene.GetSceneObjectPart(objectID);
ScenePresence p = scene.GetScenePresence(userID);
if (part == null || p == null)
return false;
if (!IsAdministrator(userID))
{
if (part.OwnerID != userID)
{
// Group permissions
if ((part.GroupID == UUID.Zero) || (p.ControllingClient.GetGroupPowers(part.GroupID) == 0) || ((part.GroupMask & (uint)PermissionMask.Modify) == 0))
return false;
} else {
if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
return false;
}
if ((int)InventoryType.LSL == invType)
if (m_allowedScriptCreators == UserSet.Administrators)
return false;
}
return true;
}

View File

@ -1532,16 +1532,6 @@ namespace OpenSim.Region.Framework.Scenes
if (part == null)
return;
if (part.OwnerID != remoteClient.AgentId)
{
// Group permissions
if ((part.GroupID == UUID.Zero) || (remoteClient.GetGroupPowers(part.GroupID) == 0) || ((part.GroupMask & (uint)PermissionMask.Modify) == 0))
return;
} else {
if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
return;
}
if (!Permissions.CanCreateObjectInventory(
itemBase.InvType, part.UUID, remoteClient.AgentId))
return;