mirror of
https://github.com/opensim/opensim.git
synced 2026-08-09 18:55:58 +08:00
fix right to change permissions of group owned objects
This commit is contained in:
@@ -293,6 +293,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
||||
scenePermissions.OnDeleteObject += CanDeleteObject;
|
||||
scenePermissions.OnEditObjectByIDs += CanEditObjectByIDs;
|
||||
scenePermissions.OnEditObject += CanEditObject;
|
||||
scenePermissions.OnEditObjectPerms += CanEditObjectPerms;
|
||||
scenePermissions.OnInventoryTransfer += CanInventoryTransfer;
|
||||
scenePermissions.OnMoveObject += CanMoveObject;
|
||||
scenePermissions.OnTakeObject += CanTakeObject;
|
||||
@@ -391,6 +392,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
||||
scenePermissions.OnDeleteObject -= CanDeleteObject;
|
||||
scenePermissions.OnEditObjectByIDs -= CanEditObjectByIDs;
|
||||
scenePermissions.OnEditObject -= CanEditObject;
|
||||
scenePermissions.OnEditObjectPerms -= CanEditObjectPerms;
|
||||
scenePermissions.OnInventoryTransfer -= CanInventoryTransfer;
|
||||
scenePermissions.OnMoveObject -= CanMoveObject;
|
||||
scenePermissions.OnTakeObject -= CanTakeObject;
|
||||
@@ -1387,6 +1389,35 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool CanEditObjectPerms(SceneObjectGroup sog, UUID userID)
|
||||
{
|
||||
DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name);
|
||||
if (m_bypassPermissions) return m_bypassPermissionsValue;
|
||||
|
||||
if (sog == null)
|
||||
return false;
|
||||
|
||||
if(sog.OwnerID == userID || IsAdministrator(userID))
|
||||
return true;
|
||||
|
||||
UUID sogGroupID = sog.GroupID;
|
||||
if(sogGroupID == UUID.Zero || sogGroupID != sog.OwnerID)
|
||||
return false;
|
||||
|
||||
uint perms = sog.EffectiveOwnerPerms;
|
||||
if((perms & (uint)PermissionMask.Modify) == 0)
|
||||
return false;
|
||||
|
||||
ulong powers = 0;
|
||||
if(GroupMemberPowers(sogGroupID, userID, ref powers))
|
||||
{
|
||||
if((powers & (ulong)GroupPowers.ObjectManipulate) != 0)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private bool CanEditObjectInventory(UUID objectID, UUID userID)
|
||||
{
|
||||
DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name);
|
||||
@@ -2306,7 +2337,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
||||
ulong powers = 0;
|
||||
if(GroupMemberPowers(sogGroupID, userID, ref powers))
|
||||
{
|
||||
if(powers == (ulong)GroupPowers.ObjectManipulate)
|
||||
if((powers & (ulong)GroupPowers.ObjectManipulate) != 0)
|
||||
return true;
|
||||
|
||||
if((ti.EveryonePermissions & (uint)PermissionMask.Copy) != 0)
|
||||
|
||||
Reference in New Issue
Block a user