aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs')
-rw-r--r--OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs96
1 files changed, 96 insertions, 0 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
index 7ecbd26..7d0c47f 100644
--- a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
@@ -336,6 +336,102 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
336 } 336 }
337 } 337 }
338 338
339 /// <summary>
340 ///
341 /// </summary>
342 /// <param name="uuid"></param>
343 /// <param name="names">Caller please provide a properly instantiated array for names, string[2]</param>
344 /// <returns></returns>
345 private bool TryGetUserNames(UUID uuid, string[] names)
346 {
347 if (names == null)
348 names = new string[2];
349
350 if (TryGetUserNamesFromCache(uuid, names))
351 return true;
352
353 if (TryGetUserNamesFromServices(uuid, names))
354 return true;
355
356 return false;
357 }
358
359 private bool TryGetUserNamesFromCache(UUID uuid, string[] names)
360 {
361 lock (m_UserCache)
362 {
363 if (m_UserCache.ContainsKey(uuid))
364 {
365 names[0] = m_UserCache[uuid].FirstName;
366 names[1] = m_UserCache[uuid].LastName;
367
368 return true;
369 }
370 }
371
372 return false;
373 }
374
375 /// <summary>
376 /// Try to get the names bound to the given uuid, from the services.
377 /// </summary>
378 /// <returns>True if the name was found, false if not.</returns>
379 /// <param name='uuid'></param>
380 /// <param name='names'>The array of names if found. If not found, then names[0] = "Unknown" and names[1] = "User"</param>
381 private bool TryGetUserNamesFromServices(UUID uuid, string[] names)
382 {
383 UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount(UUID.Zero, uuid);
384
385 if (account != null)
386 {
387 names[0] = account.FirstName;
388 names[1] = account.LastName;
389
390 UserData user = new UserData();
391 user.FirstName = account.FirstName;
392 user.LastName = account.LastName;
393
394 lock (m_UserCache)
395 m_UserCache[uuid] = user;
396
397 return true;
398 }
399 else
400 {
401 // Let's try the GridUser service
402 GridUserInfo uInfo = m_Scenes[0].GridUserService.GetGridUserInfo(uuid.ToString());
403 if (uInfo != null)
404 {
405 string url, first, last, tmp;
406 UUID u;
407 if (Util.ParseUniversalUserIdentifier(uInfo.UserID, out u, out url, out first, out last, out tmp))
408 {
409 AddUser(uuid, first, last, url);
410
411 if (m_UserCache.ContainsKey(uuid))
412 {
413 names[0] = m_UserCache[uuid].FirstName;
414 names[1] = m_UserCache[uuid].LastName;
415
416 return true;
417 }
418 }
419 else
420 m_log.DebugFormat("[USER MANAGEMENT MODULE]: Unable to parse UUI {0}", uInfo.UserID);
421 }
422// else
423// {
424// m_log.DebugFormat("[USER MANAGEMENT MODULE]: No grid user found for {0}", uuid);
425// }
426
427 names[0] = "Unknown";
428 names[1] = "UserUMMTGUN9";
429
430 return false;
431 }
432 }
433
434
339 #region IUserManagement 435 #region IUserManagement
340 436
341 public UUID GetUserIdByName(string name) 437 public UUID GetUserIdByName(string name)