aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Services/UserAccountService
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Services/UserAccountService')
-rw-r--r--OpenSim/Services/UserAccountService/UserAccountService.cs145
1 files changed, 95 insertions, 50 deletions
diff --git a/OpenSim/Services/UserAccountService/UserAccountService.cs b/OpenSim/Services/UserAccountService/UserAccountService.cs
index dacfa51..8f78813 100644
--- a/OpenSim/Services/UserAccountService/UserAccountService.cs
+++ b/OpenSim/Services/UserAccountService/UserAccountService.cs
@@ -26,25 +26,58 @@
26 */ 26 */
27 27
28using System; 28using System;
29using System.Collections.Generic;
29using System.Reflection; 30using System.Reflection;
30using Nini.Config; 31using Nini.Config;
31using OpenSim.Data; 32using OpenSim.Data;
32using OpenSim.Framework.Console;
33using OpenSim.Services.Interfaces; 33using OpenSim.Services.Interfaces;
34using System.Collections.Generic; 34using OpenSim.Framework.Console;
35using GridRegion = OpenSim.Services.Interfaces.GridRegion;
36
35using OpenMetaverse; 37using OpenMetaverse;
38using log4net;
36 39
37namespace OpenSim.Services.UserAccountService 40namespace OpenSim.Services.UserAccountService
38{ 41{
39 public class UserAccountService : UserAccountServiceBase, IUserAccountService 42 public class UserAccountService : UserAccountServiceBase, IUserAccountService
40 { 43 {
44 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
45 private static UserAccountService m_RootInstance;
46
47 protected IGridService m_GridService;
48 protected IAuthenticationService m_AuthenticationService;
49 protected IPresenceService m_PresenceService;
50
41 public UserAccountService(IConfigSource config) 51 public UserAccountService(IConfigSource config)
42 : base(config) 52 : base(config)
43 { 53 {
44 MainConsole.Instance.Commands.AddCommand("UserService", false, 54 IConfig userConfig = config.Configs["UserAccountService"];
45 "create user", 55 if (userConfig == null)
46 "create user [<first> [<last> [<pass> [<x> <y> [<email>]]]]]", 56 throw new Exception("No UserAccountService configuration");
47 "Create a new user", HandleCreateUser); 57
58 // In case there are several instances of this class in the same process,
59 // the console commands are only registered for the root instance
60 if (m_RootInstance == null)
61 {
62 m_RootInstance = this;
63 string gridServiceDll = userConfig.GetString("GridService", string.Empty);
64 if (gridServiceDll != string.Empty)
65 m_GridService = LoadPlugin<IGridService>(gridServiceDll, new Object[] { config });
66
67 string authServiceDll = userConfig.GetString("AuthenticationService", string.Empty);
68 if (authServiceDll != string.Empty)
69 m_AuthenticationService = LoadPlugin<IAuthenticationService>(authServiceDll, new Object[] { config });
70
71 string presenceServiceDll = userConfig.GetString("PresenceService", string.Empty);
72 if (presenceServiceDll != string.Empty)
73 m_PresenceService = LoadPlugin<IPresenceService>(presenceServiceDll, new Object[] { config });
74
75 MainConsole.Instance.Commands.AddCommand("UserService", false,
76 "create user",
77 "create user [<first> [<last> [<pass> [<email>]]]]",
78 "Create a new user", HandleCreateUser);
79 }
80
48 } 81 }
49 82
50 #region IUserAccountService 83 #region IUserAccountService
@@ -202,52 +235,64 @@ namespace OpenSim.Services.UserAccountService
202 string lastName; 235 string lastName;
203 string password; 236 string password;
204 string email; 237 string email;
205 uint regX = 1000; 238
206 uint regY = 1000; 239 if (cmdparams.Length < 3)
207 240 firstName = MainConsole.Instance.CmdPrompt("First name", "Default");
208 // IConfig standalone; 241 else firstName = cmdparams[2];
209 // if ((standalone = m_config.Source.Configs["StandAlone"]) != null) 242
210 // { 243 if (cmdparams.Length < 4)
211 // regX = (uint)standalone.GetInt("default_location_x", (int)regX); 244 lastName = MainConsole.Instance.CmdPrompt("Last name", "User");
212 // regY = (uint)standalone.GetInt("default_location_y", (int)regY); 245 else lastName = cmdparams[3];
213 // } 246
214 247 if (cmdparams.Length < 5)
215 248 password = MainConsole.Instance.PasswdPrompt("Password");
216 // if (cmdparams.Length < 3) 249 else password = cmdparams[4];
217 // firstName = MainConsole.Instance.CmdPrompt("First name", "Default"); 250
218 // else firstName = cmdparams[2]; 251 if (cmdparams.Length < 6)
219 252 email = MainConsole.Instance.CmdPrompt("Email", "");
220 // if (cmdparams.Length < 4) 253 else email = cmdparams[5];
221 // lastName = MainConsole.Instance.CmdPrompt("Last name", "User"); 254
222 // else lastName = cmdparams[3]; 255 UserAccount account = GetUserAccount(UUID.Zero, firstName, lastName);
223 256 if (null == account)
224 // if (cmdparams.Length < 5) 257 {
225 // password = MainConsole.Instance.PasswdPrompt("Password"); 258 account = new UserAccount(UUID.Zero, firstName, lastName, email);
226 // else password = cmdparams[4]; 259 if (StoreUserAccount(account))
227 260 {
228 // if (cmdparams.Length < 6) 261 bool success = false;
229 // regX = Convert.ToUInt32(MainConsole.Instance.CmdPrompt("Start Region X", regX.ToString())); 262 if (m_AuthenticationService != null)
230 // else regX = Convert.ToUInt32(cmdparams[5]); 263 success = m_AuthenticationService.SetPassword(account.PrincipalID, password);
231 264 if (!success)
232 // if (cmdparams.Length < 7) 265 m_log.WarnFormat("[USER ACCOUNT SERVICE]: Unable to set password for account {0} {1}.",
233 // regY = Convert.ToUInt32(MainConsole.Instance.CmdPrompt("Start Region Y", regY.ToString())); 266 firstName, lastName);
234 // else regY = Convert.ToUInt32(cmdparams[6]); 267
235 268 GridRegion home = null;
236 // if (cmdparams.Length < 8) 269 if (m_GridService != null)
237 // email = MainConsole.Instance.CmdPrompt("Email", ""); 270 {
238 // else email = cmdparams[7]; 271 List<GridRegion> defaultRegions = m_GridService.GetDefaultRegions(UUID.Zero);
239 272 if (defaultRegions != null && defaultRegions.Count >= 1)
240 // if (null == m_commsManager.UserProfileCacheService.GetUserDetails(firstName, lastName)) 273 home = defaultRegions[0];
241 // { 274
242 // m_commsManager.UserAdminService.AddUser(firstName, lastName, password, email, regX, regY); 275 if (m_PresenceService != null && home != null)
243 // } 276 m_PresenceService.SetHomeLocation(account.PrincipalID.ToString(), home.RegionID, new Vector3(128, 128, 0), new Vector3(0, 1, 0));
244 // else 277 else
245 // { 278 m_log.WarnFormat("[USER ACCOUNT SERVICE]: Unable to set home for account {0} {1}.",
246 // m_log.ErrorFormat("[CONSOLE]: A user with the name {0} {1} already exists!", firstName, lastName); 279 firstName, lastName);
247 // } 280
248 //} 281 }
282 else
283 m_log.WarnFormat("[USER ACCOUNT SERVICE]: Unable to retrieve home region for account {0} {1}.",
284 firstName, lastName);
285
286 m_log.InfoFormat("[USER ACCOUNT SERVICE]: Account {0} {1} created successfully", firstName, lastName);
287 }
288 }
289 else
290 {
291 m_log.ErrorFormat("[USER ACCOUNT SERVICE]: A user with the name {0} {1} already exists!", firstName, lastName);
292 }
249 293
250 } 294 }
251 #endregion 295 #endregion
296
252 } 297 }
253} 298}