aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/World/Permissions
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Permissions')
-rw-r--r--OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs52
1 files changed, 30 insertions, 22 deletions
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
index 1533462..4652d70 100644
--- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
+++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
@@ -32,7 +32,7 @@ using log4net;
32using Nini.Config; 32using Nini.Config;
33using OpenMetaverse; 33using OpenMetaverse;
34using OpenSim.Framework; 34using OpenSim.Framework;
35using OpenSim.Framework.Communications.Cache; 35
36using OpenSim.Region.Framework.Interfaces; 36using OpenSim.Region.Framework.Interfaces;
37using OpenSim.Region.Framework.Scenes; 37using OpenSim.Region.Framework.Scenes;
38using OpenSim.Services.Interfaces; 38using OpenSim.Services.Interfaces;
@@ -95,6 +95,23 @@ namespace OpenSim.Region.CoreModules.World.Permissions
95 95
96 protected Scene m_scene; 96 protected Scene m_scene;
97 97
98 private InventoryFolderImpl m_libraryRootFolder;
99 protected InventoryFolderImpl LibraryRootFolder
100 {
101 get
102 {
103 if (m_libraryRootFolder != null)
104 return m_libraryRootFolder;
105
106 ILibraryService lib = m_scene.RequestModuleInterface<ILibraryService>();
107 if (lib != null)
108 {
109 m_libraryRootFolder = lib.LibraryRootFolder;
110 }
111 return m_libraryRootFolder;
112 }
113 }
114
98 #region Constants 115 #region Constants
99 // These are here for testing. They will be taken out 116 // These are here for testing. They will be taken out
100 117
@@ -462,12 +479,6 @@ namespace OpenSim.Region.CoreModules.World.Permissions
462 { 479 {
463 if (user == UUID.Zero) return false; 480 if (user == UUID.Zero) return false;
464 481
465 if (m_scene.RegionInfo.MasterAvatarAssignedUUID != UUID.Zero)
466 {
467 if (m_RegionOwnerIsGod && (m_scene.RegionInfo.MasterAvatarAssignedUUID == user))
468 return true;
469 }
470
471 if (m_scene.RegionInfo.EstateSettings.EstateOwner != UUID.Zero) 482 if (m_scene.RegionInfo.EstateSettings.EstateOwner != UUID.Zero)
472 { 483 {
473 if (m_scene.RegionInfo.EstateSettings.EstateOwner == user && m_RegionOwnerIsGod) 484 if (m_scene.RegionInfo.EstateSettings.EstateOwner == user && m_RegionOwnerIsGod)
@@ -479,10 +490,10 @@ namespace OpenSim.Region.CoreModules.World.Permissions
479 490
480 if (m_allowGridGods) 491 if (m_allowGridGods)
481 { 492 {
482 CachedUserInfo profile = m_scene.CommsManager.UserProfileCacheService.GetUserDetails(user); 493 UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, user);
483 if (profile != null && profile.UserProfile != null) 494 if (account != null)
484 { 495 {
485 if (profile.UserProfile.GodLevel >= 200) 496 if (account.UserLevel >= 200)
486 return true; 497 return true;
487 } 498 }
488 } 499 }
@@ -499,13 +510,10 @@ namespace OpenSim.Region.CoreModules.World.Permissions
499 if (m_friendsModule == null) 510 if (m_friendsModule == null)
500 return false; 511 return false;
501 512
502 List<FriendListItem> profile = m_friendsModule.GetUserFriends(user); 513 uint friendPerms = m_friendsModule.GetFriendPerms(user, objectOwner);
514 if ((friendPerms & (uint)FriendRights.CanModifyObjects) != 0)
515 return true;
503 516
504 foreach (FriendListItem item in profile)
505 {
506 if (item.Friend == objectOwner && (item.FriendPerms & (uint)FriendRights.CanModifyObjects) != 0)
507 return true;
508 }
509 return false; 517 return false;
510 } 518 }
511 519
@@ -1011,9 +1019,9 @@ namespace OpenSim.Region.CoreModules.World.Permissions
1011 IInventoryService invService = m_scene.InventoryService; 1019 IInventoryService invService = m_scene.InventoryService;
1012 InventoryItemBase assetRequestItem = new InventoryItemBase(notecard, user); 1020 InventoryItemBase assetRequestItem = new InventoryItemBase(notecard, user);
1013 assetRequestItem = invService.GetItem(assetRequestItem); 1021 assetRequestItem = invService.GetItem(assetRequestItem);
1014 if (assetRequestItem == null) // Library item 1022 if (assetRequestItem == null && LibraryRootFolder != null) // Library item
1015 { 1023 {
1016 assetRequestItem = scene.CommsManager.UserProfileCacheService.LibraryRoot.FindItem(notecard); 1024 assetRequestItem = LibraryRootFolder.FindItem(notecard);
1017 1025
1018 if (assetRequestItem != null) // Implicitly readable 1026 if (assetRequestItem != null) // Implicitly readable
1019 return true; 1027 return true;
@@ -1431,9 +1439,9 @@ namespace OpenSim.Region.CoreModules.World.Permissions
1431 IInventoryService invService = m_scene.InventoryService; 1439 IInventoryService invService = m_scene.InventoryService;
1432 InventoryItemBase assetRequestItem = new InventoryItemBase(script, user); 1440 InventoryItemBase assetRequestItem = new InventoryItemBase(script, user);
1433 assetRequestItem = invService.GetItem(assetRequestItem); 1441 assetRequestItem = invService.GetItem(assetRequestItem);
1434 if (assetRequestItem == null) // Library item 1442 if (assetRequestItem == null && LibraryRootFolder != null) // Library item
1435 { 1443 {
1436 assetRequestItem = m_scene.CommsManager.UserProfileCacheService.LibraryRoot.FindItem(script); 1444 assetRequestItem = LibraryRootFolder.FindItem(script);
1437 1445
1438 if (assetRequestItem != null) // Implicitly readable 1446 if (assetRequestItem != null) // Implicitly readable
1439 return true; 1447 return true;
@@ -1526,9 +1534,9 @@ namespace OpenSim.Region.CoreModules.World.Permissions
1526 IInventoryService invService = m_scene.InventoryService; 1534 IInventoryService invService = m_scene.InventoryService;
1527 InventoryItemBase assetRequestItem = new InventoryItemBase(notecard, user); 1535 InventoryItemBase assetRequestItem = new InventoryItemBase(notecard, user);
1528 assetRequestItem = invService.GetItem(assetRequestItem); 1536 assetRequestItem = invService.GetItem(assetRequestItem);
1529 if (assetRequestItem == null) // Library item 1537 if (assetRequestItem == null && LibraryRootFolder != null) // Library item
1530 { 1538 {
1531 assetRequestItem = m_scene.CommsManager.UserProfileCacheService.LibraryRoot.FindItem(notecard); 1539 assetRequestItem = LibraryRootFolder.FindItem(notecard);
1532 1540
1533 if (assetRequestItem != null) // Implicitly readable 1541 if (assetRequestItem != null) // Implicitly readable
1534 return true; 1542 return true;