aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/PermissionManager.cs
diff options
context:
space:
mode:
authorlbsa712008-01-18 14:01:41 +0000
committerlbsa712008-01-18 14:01:41 +0000
commitdfda3dd4d7d14af6c86bc09765f0976bfc6b18c1 (patch)
tree442251437cc7cf0f1c05f02cb7c9740e25bfa956 /OpenSim/Region/Environment/PermissionManager.cs
parent* Friction reduction update. (diff)
downloadopensim-SC_OLD-dfda3dd4d7d14af6c86bc09765f0976bfc6b18c1.zip
opensim-SC_OLD-dfda3dd4d7d14af6c86bc09765f0976bfc6b18c1.tar.gz
opensim-SC_OLD-dfda3dd4d7d14af6c86bc09765f0976bfc6b18c1.tar.bz2
opensim-SC_OLD-dfda3dd4d7d14af6c86bc09765f0976bfc6b18c1.tar.xz
* Fixed bug where 'taskOwnerId' would always be null in PermissionManager, hence always retuning false on GenericObjectPermission.
Diffstat (limited to 'OpenSim/Region/Environment/PermissionManager.cs')
-rw-r--r--OpenSim/Region/Environment/PermissionManager.cs32
1 files changed, 20 insertions, 12 deletions
diff --git a/OpenSim/Region/Environment/PermissionManager.cs b/OpenSim/Region/Environment/PermissionManager.cs
index f72ae66..9640ed7 100644
--- a/OpenSim/Region/Environment/PermissionManager.cs
+++ b/OpenSim/Region/Environment/PermissionManager.cs
@@ -240,7 +240,7 @@ namespace OpenSim.Region.Environment
240 return objectEveryoneMask; 240 return objectEveryoneMask;
241 } 241 }
242 242
243 protected virtual bool GenericObjectPermission(LLUUID user, LLUUID objId) 243 protected virtual bool GenericObjectPermission(LLUUID currentUser, LLUUID objId)
244 { 244 {
245 // Default: deny 245 // Default: deny
246 bool permission = false; 246 bool permission = false;
@@ -256,32 +256,40 @@ namespace OpenSim.Region.Environment
256 return false; 256 return false;
257 } 257 }
258 258
259 SceneObjectGroup task = (SceneObjectGroup) m_scene.Entities[objId]; 259 SceneObjectGroup group = (SceneObjectGroup) m_scene.Entities[objId];
260 LLUUID taskOwner = null; 260
261 // Added this because at this point in time it wouldn't be wise for 261 LLUUID objectOwner = group.OwnerID;
262 // the administrator object permissions to take effect.
263 LLUUID objectOwner = task.OwnerID;
264 262
265 // Object owners should be able to edit their own content 263 // Object owners should be able to edit their own content
266 if (user == objectOwner) 264 if (currentUser == objectOwner)
265 {
267 permission = true; 266 permission = true;
267 }
268 268
269 // Users should be able to edit what is over their land. 269 // Users should be able to edit what is over their land.
270 Land parcel = m_scene.LandManager.getLandObject(task.AbsolutePosition.X, task.AbsolutePosition.Y); 270 Land parcel = m_scene.LandManager.getLandObject(group.AbsolutePosition.X, group.AbsolutePosition.Y);
271 if (parcel != null && parcel.landData.ownerID == user) 271 if ((parcel != null) && ( parcel.landData.ownerID == currentUser))
272 {
272 permission = true; 273 permission = true;
274 }
273 275
274 // Estate users should be able to edit anything in the sim 276 // Estate users should be able to edit anything in the sim
275 if (IsEstateManager(user)) 277 if (IsEstateManager(currentUser))
278 {
276 permission = true; 279 permission = true;
280 }
277 281
278 // Admin objects should not be editable by the above 282 // Admin objects should not be editable by the above
279 if (IsAdministrator(taskOwner)) 283 if (IsAdministrator(objectOwner))
284 {
280 permission = false; 285 permission = false;
286 }
281 287
282 // Admin should be able to edit anything in the sim (including admin objects) 288 // Admin should be able to edit anything in the sim (including admin objects)
283 if (IsAdministrator(user)) 289 if (IsAdministrator(currentUser))
290 {
284 permission = true; 291 permission = true;
292 }
285 293
286 return permission; 294 return permission;
287 } 295 }