diff options
3 files changed, 24 insertions, 0 deletions
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index 2a87da2..6864629 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs | |||
@@ -283,6 +283,9 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
283 | 283 | ||
284 | public bool IsBannedFromLand(UUID avatar) | 284 | public bool IsBannedFromLand(UUID avatar) |
285 | { | 285 | { |
286 | if (m_scene.Permissions.IsAdministrator(avatar)) | ||
287 | return false; | ||
288 | |||
286 | if ((LandData.Flags & (uint) ParcelFlags.UseBanList) > 0) | 289 | if ((LandData.Flags & (uint) ParcelFlags.UseBanList) > 0) |
287 | { | 290 | { |
288 | ParcelManager.ParcelAccessEntry entry = new ParcelManager.ParcelAccessEntry(); | 291 | ParcelManager.ParcelAccessEntry entry = new ParcelManager.ParcelAccessEntry(); |
@@ -301,6 +304,9 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
301 | 304 | ||
302 | public bool IsRestrictedFromLand(UUID avatar) | 305 | public bool IsRestrictedFromLand(UUID avatar) |
303 | { | 306 | { |
307 | if (m_scene.Permissions.IsAdministrator(avatar)) | ||
308 | return false; | ||
309 | |||
304 | if ((LandData.Flags & (uint) ParcelFlags.UseAccessList) > 0) | 310 | if ((LandData.Flags & (uint) ParcelFlags.UseAccessList) > 0) |
305 | { | 311 | { |
306 | ParcelManager.ParcelAccessEntry entry = new ParcelManager.ParcelAccessEntry(); | 312 | ParcelManager.ParcelAccessEntry entry = new ParcelManager.ParcelAccessEntry(); |
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs index 69b247c..1d70546 100644 --- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs | |||
@@ -209,6 +209,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
209 | m_scene.Permissions.OnDeedParcel += CanDeedParcel; | 209 | m_scene.Permissions.OnDeedParcel += CanDeedParcel; |
210 | m_scene.Permissions.OnDeedObject += CanDeedObject; | 210 | m_scene.Permissions.OnDeedObject += CanDeedObject; |
211 | m_scene.Permissions.OnIsGod += IsGod; | 211 | m_scene.Permissions.OnIsGod += IsGod; |
212 | m_scene.Permissions.OnIsAdministrator += IsAdministrator; | ||
212 | m_scene.Permissions.OnDuplicateObject += CanDuplicateObject; | 213 | m_scene.Permissions.OnDuplicateObject += CanDuplicateObject; |
213 | m_scene.Permissions.OnDeleteObject += CanDeleteObject; //MAYBE FULLY IMPLEMENTED | 214 | m_scene.Permissions.OnDeleteObject += CanDeleteObject; //MAYBE FULLY IMPLEMENTED |
214 | m_scene.Permissions.OnEditObject += CanEditObject; //MAYBE FULLY IMPLEMENTED | 215 | m_scene.Permissions.OnEditObject += CanEditObject; //MAYBE FULLY IMPLEMENTED |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs b/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs index 7dab04f..a523351 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs | |||
@@ -64,6 +64,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
64 | public delegate bool RunConsoleCommandHandler(UUID user, Scene requestFromScene); | 64 | public delegate bool RunConsoleCommandHandler(UUID user, Scene requestFromScene); |
65 | public delegate bool IssueEstateCommandHandler(UUID user, Scene requestFromScene, bool ownerCommand); | 65 | public delegate bool IssueEstateCommandHandler(UUID user, Scene requestFromScene, bool ownerCommand); |
66 | public delegate bool IsGodHandler(UUID user, Scene requestFromScene); | 66 | public delegate bool IsGodHandler(UUID user, Scene requestFromScene); |
67 | public delegate bool IsAdministratorHandler(UUID user); | ||
67 | public delegate bool EditParcelHandler(UUID user, ILandObject parcel, Scene scene); | 68 | public delegate bool EditParcelHandler(UUID user, ILandObject parcel, Scene scene); |
68 | public delegate bool SellParcelHandler(UUID user, ILandObject parcel, Scene scene); | 69 | public delegate bool SellParcelHandler(UUID user, ILandObject parcel, Scene scene); |
69 | public delegate bool AbandonParcelHandler(UUID user, ILandObject parcel, Scene scene); | 70 | public delegate bool AbandonParcelHandler(UUID user, ILandObject parcel, Scene scene); |
@@ -122,6 +123,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
122 | public event RunConsoleCommandHandler OnRunConsoleCommand; | 123 | public event RunConsoleCommandHandler OnRunConsoleCommand; |
123 | public event IssueEstateCommandHandler OnIssueEstateCommand; | 124 | public event IssueEstateCommandHandler OnIssueEstateCommand; |
124 | public event IsGodHandler OnIsGod; | 125 | public event IsGodHandler OnIsGod; |
126 | public event IsAdministratorHandler OnIsAdministrator; | ||
125 | public event EditParcelHandler OnEditParcel; | 127 | public event EditParcelHandler OnEditParcel; |
126 | public event SellParcelHandler OnSellParcel; | 128 | public event SellParcelHandler OnSellParcel; |
127 | public event AbandonParcelHandler OnAbandonParcel; | 129 | public event AbandonParcelHandler OnAbandonParcel; |
@@ -652,6 +654,21 @@ namespace OpenSim.Region.Framework.Scenes | |||
652 | } | 654 | } |
653 | return true; | 655 | return true; |
654 | } | 656 | } |
657 | |||
658 | public bool IsAdministrator(UUID user) | ||
659 | { | ||
660 | IsAdministratorHandler handler = OnIsAdministrator; | ||
661 | if (handler != null) | ||
662 | { | ||
663 | Delegate[] list = handler.GetInvocationList(); | ||
664 | foreach (IsAdministratorHandler h in list) | ||
665 | { | ||
666 | if (h(user) == false) | ||
667 | return false; | ||
668 | } | ||
669 | } | ||
670 | return true; | ||
671 | } | ||
655 | #endregion | 672 | #endregion |
656 | 673 | ||
657 | #region EDIT PARCEL | 674 | #region EDIT PARCEL |