private OSDMap FindUsers(OSDMap map)
{
OSDMap resp = new OSDMap();
IUserAccountService accountService = m_registry.RequestModuleInterface<IUserAccountService>();
IAgentConnector agentConnector = Aurora.DataManager.DataManager.RequestPlugin<IAgentConnector>();
if (accountService == null)
{
resp["Failed"] = new OSDString("Could not find IUserAccountService");
}
else if (agentConnector == null)
{
resp["Failed"] = new OSDString("Could not find IAgentConnector");
}
else
{
UUID scopeID = map.ContainsKey("ScopeID") ? map["ScopeID"].AsUUID() : UUID.Zero;
uint start = map.ContainsKey("Start") ? map["Start"].AsUInteger() : 0;
uint count = map.ContainsKey("Count") ? map["Count"].AsUInteger() : 10;
string Query = map["Query"].AsString();
List<UserAccount> accounts = accountService.GetUserAccounts(null, Query, start, count);
OSDArray users = new OSDArray();
MainConsole.Instance.TraceFormat("{0} accounts found", accounts.Count);
foreach (UserAccount acc in accounts)
{
OSDMap userInfo = new OSDMap();
userInfo["PrincipalID"] = acc.PrincipalID;
userInfo["UserName"] = acc.Name;
userInfo["Created"] = acc.Created;
userInfo["UserFlags"] = acc.UserFlags;
userInfo["UserLevel"] = acc.UserLevel;
IAgentInfo agent = agentConnector.GetAgent(acc.PrincipalID);
if (agent == null)
{
MainConsole.Instance.ErrorFormat("Could not get IAgentInfo for {0} ({1})", acc.Name, acc.PrincipalID);
}
userInfo["Flags"] = (agent == null) ? 0 : (int)agent.Flags;
users.Add(userInfo);
}
resp["Users"] = users;
resp["Start"] = OSD.FromInteger(start);
resp["Count"] = OSD.FromInteger(count);
resp["Query"] = OSD.FromString(Query);
resp["Total"] = OSD.FromInteger((int)accountService.NumberOfUserAccounts(null, Query));
}
return resp;
}