private OSDMap EditUser(OSDMap map)
{
bool editRLInfo = (map.ContainsKey("RLName") && map.ContainsKey("RLAddress") && map.ContainsKey("RLZip") && map.ContainsKey("RLCity") && map.ContainsKey("RLCountry"));
OSDMap resp = new OSDMap();
resp["agent"] = OSD.FromBoolean(!editRLInfo); // if we have no RLInfo, editing account is assumed to be successful.
resp["account"] = OSD.FromBoolean(false);
UUID principalID = map["UserID"].AsUUID();
UserAccount account = m_registry.RequestModuleInterface<IUserAccountService>().GetUserAccount(null, principalID);
if(account != null)
{
account.Email = map["Email"];
if (m_registry.RequestModuleInterface<IUserAccountService>().GetUserAccount(null, map["Name"].AsString()) == null)
{
account.Name = map["Name"];
}
if (map.ContainsKey("UserLevel"))
{
account.UserLevel = map["UserLevel"].AsInteger();
}
if (editRLInfo)
{
IAgentConnector agentConnector = Aurora.DataManager.DataManager.RequestPlugin<IAgentConnector>();
IAgentInfo agent = agentConnector.GetAgent(account.PrincipalID);
if (agent == null)
{
agentConnector.CreateNewAgent(account.PrincipalID);
agent = agentConnector.GetAgent(account.PrincipalID);
}
if (agent != null)
{
agent.OtherAgentInformation["RLName"] = map["RLName"];
agent.OtherAgentInformation["RLAddress"] = map["RLAddress"];
agent.OtherAgentInformation["RLZip"] = map["RLZip"];
agent.OtherAgentInformation["RLCity"] = map["RLCity"];
agent.OtherAgentInformation["RLCountry"] = map["RLCountry"];
agentConnector.UpdateAgent(agent);
resp["agent"] = OSD.FromBoolean(true);
}
}
resp["account"] = OSD.FromBoolean(m_registry.RequestModuleInterface<IUserAccountService>().StoreUserAccount(account));
}
return resp;
}