diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 08f3dc7e9e..c270428e10 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs @@ -3115,7 +3115,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController UserAccount account = userAccountService.GetUserAccount(scopeID, firstName, lastName); if (null == account) { - account = new UserAccount(scopeID, firstName, lastName, email); + account = new UserAccount(scopeID, UUID.Random(), firstName, lastName, email); if (account.ServiceURLs == null || (account.ServiceURLs != null && account.ServiceURLs.Count == 0)) { account.ServiceURLs = new Dictionary(); diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 866ba9a8d4..a6b91a3e34 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -462,9 +462,18 @@ namespace OpenSim string password = MainConsole.Instance.PasswdPrompt("Password"); string email = MainConsole.Instance.CmdPrompt("Email", ""); + string rawPrincipalId = MainConsole.Instance.CmdPrompt("ID", UUID.Random().ToString()); + + UUID principalId = UUID.Zero; + if (!UUID.TryParse(rawPrincipalId, out principalId)) + { + m_log.ErrorFormat("[OPENSIM]: ID {0} is not a valid UUID", rawPrincipalId); + return; + } + account = ((UserAccountService)scene.UserAccountService).CreateUser( - regionInfo.ScopeID, first, last, password, email); + regionInfo.ScopeID, principalId, first, last, password, email); } // } } diff --git a/OpenSim/Services/Interfaces/IUserAccountService.cs b/OpenSim/Services/Interfaces/IUserAccountService.cs index 9c992e04a6..20414f6550 100644 --- a/OpenSim/Services/Interfaces/IUserAccountService.cs +++ b/OpenSim/Services/Interfaces/IUserAccountService.cs @@ -44,9 +44,9 @@ namespace OpenSim.Services.Interfaces PrincipalID = principalID; } - public UserAccount(UUID scopeID, string firstName, string lastName, string email) + public UserAccount(UUID scopeID, UUID principalID, string firstName, string lastName, string email) { - PrincipalID = UUID.Random(); + PrincipalID = principalID; ScopeID = scopeID; FirstName = firstName; LastName = lastName; diff --git a/OpenSim/Services/UserAccountService/UserAccountService.cs b/OpenSim/Services/UserAccountService/UserAccountService.cs index e071b94dd5..923be7e9df 100644 --- a/OpenSim/Services/UserAccountService/UserAccountService.cs +++ b/OpenSim/Services/UserAccountService/UserAccountService.cs @@ -93,7 +93,7 @@ namespace OpenSim.Services.UserAccountService { MainConsole.Instance.Commands.AddCommand("UserService", false, "create user", - "create user [ [ [ []]]]", + "create user [ [ [ [ []]]]]", "Create a new user", HandleCreateUser); MainConsole.Instance.Commands.AddCommand("UserService", false, @@ -321,6 +321,7 @@ namespace OpenSim.Services.UserAccountService string lastName; string password; string email; + string rawPrincipalId; List excluded = new List(new char[]{' '}); @@ -340,7 +341,16 @@ namespace OpenSim.Services.UserAccountService email = MainConsole.Instance.CmdPrompt("Email", ""); else email = cmdparams[5]; - CreateUser(UUID.Zero, firstName, lastName, password, email); + if (cmdparams.Length < 7) + rawPrincipalId = MainConsole.Instance.CmdPrompt("User ID", UUID.Random().ToString()); + else + rawPrincipalId = cmdparams[6]; + + UUID principalId = UUID.Zero; + if (!UUID.TryParse(rawPrincipalId, out principalId)) + throw new Exception(string.Format("ID {0} is not a valid UUID", rawPrincipalId)); + + CreateUser(UUID.Zero, principalId, firstName, lastName, password, email); } protected void HandleShowAccount(string module, string[] cmdparams) @@ -453,16 +463,17 @@ namespace OpenSim.Services.UserAccountService /// Create a user /// /// Allows hosting of multiple grids in a single database. Normally left as UUID.Zero + /// ID of the user /// /// /// /// - public UserAccount CreateUser(UUID scopeID, string firstName, string lastName, string password, string email) + public UserAccount CreateUser(UUID scopeID, UUID principalID, string firstName, string lastName, string password, string email) { UserAccount account = GetUserAccount(UUID.Zero, firstName, lastName); if (null == account) { - account = new UserAccount(UUID.Zero, firstName, lastName, email); + account = new UserAccount(UUID.Zero, principalID, firstName, lastName, email); if (account.ServiceURLs == null || (account.ServiceURLs != null && account.ServiceURLs.Count == 0)) { account.ServiceURLs = new Dictionary();