Restore group membership check for HG users in QueryAccess.

varregion
Diva Canto 2013-09-05 07:44:27 -07:00
parent dc74a50225
commit 04619a9b13
3 changed files with 17 additions and 12 deletions

View File

@ -623,10 +623,13 @@ namespace OpenSim.Groups
if (agent != null)
break;
}
if (agent == null) // oops
return AgentID.ToString();
if (agent != null)
return Util.ProduceUserUniversalIdentifier(agent);
// we don't know anything about this foreign user
// try asking the user management module, which may know more
return m_UserManagement.GetUserUUI(AgentID);
}
private string AgentUUIForOutside(string AgentIDStr)

View File

@ -481,14 +481,20 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
public string GetUserUUI(UUID userID)
{
UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount(m_Scenes[0].RegionInfo.ScopeID, userID);
if (account != null)
return userID.ToString();
UserData ud;
lock (m_UserCache)
m_UserCache.TryGetValue(userID, out ud);
if (ud == null) // It's not in the cache
{
string[] names = new string[2];
// This will pull the data from either UserAccounts or GridUser
// and stick it into the cache
TryGetUserNamesFromServices(userID, names);
lock (m_UserCache)
m_UserCache.TryGetValue(userID, out ud);
}
if (ud != null)
{
string homeURL = ud.HomeURL;

View File

@ -5801,11 +5801,7 @@ namespace OpenSim.Region.Framework.Scenes
try
{
// If this is a hypergrid user, then we can't perform a successful groups access check here since this
// currently relies on a circuit being present in the AuthenticateHandler to construct a Hypergrid ID.
// This is only present in NewUserConnection() which entity transfer calls very soon after QueryAccess().
// Therefore, we'll defer to the check in NewUserConnection() instead.
if (!AuthorizeUser(aCircuit, !UserManagementModule.IsLocalGridUser(agentID), out reason))
if (!AuthorizeUser(aCircuit, false, out reason))
{
//m_log.DebugFormat("[SCENE]: Denying access for {0}", agentID);
return false;