diff --git a/OpenSim/Framework/Communications/CommunicationsManager.cs b/OpenSim/Framework/Communications/CommunicationsManager.cs index eb820c168e..4ad808a334 100644 --- a/OpenSim/Framework/Communications/CommunicationsManager.cs +++ b/OpenSim/Framework/Communications/CommunicationsManager.cs @@ -131,11 +131,27 @@ namespace OpenSim.Framework.Communications regY = Convert.ToUInt32(cmmdParams[5]); } - AddUser(firstName, lastName, password, regX, regY); + if (null == m_userService.GetUserProfile(firstName, lastName)) + { + AddUser(firstName, lastName, password, regX, regY); + } + else + { + m_log.ErrorFormat("[USERS]: A user with the name {0} {1} already exists!", firstName, lastName); + } break; } } + /// + /// Persistently adds a user to OpenSim. + /// + /// + /// + /// + /// + /// + /// The UUID of the added user. Returns null if the add was unsuccessful public LLUUID AddUser(string firstName, string lastName, string password, uint regX, uint regY) { string md5PasswdHash = Util.Md5Hash(Util.Md5Hash(password) + ":" + String.Empty); @@ -149,7 +165,7 @@ namespace OpenSim.Framework.Communications else { m_inventoryService.CreateNewUserInventory(userProf.UUID); - System.Console.WriteLine("Created new inventory set for " + firstName + " " + lastName); + System.Console.WriteLine("[USERS]: Created new inventory set for " + firstName + " " + lastName); return userProf.UUID; } } diff --git a/OpenSim/Framework/Communications/UserManagerBase.cs b/OpenSim/Framework/Communications/UserManagerBase.cs index dbf92767af..733d62bfaa 100644 --- a/OpenSim/Framework/Communications/UserManagerBase.cs +++ b/OpenSim/Framework/Communications/UserManagerBase.cs @@ -86,11 +86,24 @@ namespace OpenSim.Framework.UserManagement #region Get UserProfile - /// - /// Loads a user profile from a database by UUID - /// - /// The target UUID - /// A user profile. Returns null if no user profile is found. + // see IUserService + public UserProfileData GetUserProfile(string fname, string lname) + { + foreach (KeyValuePair plugin in _plugins) + { + UserProfileData profile = plugin.Value.GetUserByName(fname, lname); + + if (profile != null) + { + profile.currentAgent = getUserAgent(profile.UUID); + return profile; + } + } + + return null; + } + + // see IUserService public UserProfileData GetUserProfile(LLUUID uuid) { foreach (KeyValuePair plugin in _plugins) @@ -125,28 +138,6 @@ namespace OpenSim.Framework.UserManagement return pickerlist; } - /// - /// Loads a user profile by name - /// - /// First name - /// Last name - /// A user profile. Returns null if no profile is found - public UserProfileData GetUserProfile(string fname, string lname) - { - foreach (KeyValuePair plugin in _plugins) - { - UserProfileData profile = plugin.Value.GetUserByName(fname, lname); - - if (profile != null) - { - profile.currentAgent = getUserAgent(profile.UUID); - return profile; - } - } - - return null; - } - /// /// Set's user profile from object /// diff --git a/OpenSim/Framework/Console/ConsoleBase.cs b/OpenSim/Framework/Console/ConsoleBase.cs index 829d6c7302..63711f38e9 100644 --- a/OpenSim/Framework/Console/ConsoleBase.cs +++ b/OpenSim/Framework/Console/ConsoleBase.cs @@ -295,15 +295,15 @@ namespace OpenSim.Framework.Console } // Displays a prompt and waits for the user to enter a string, then returns that string - // Done with no echo and suitable for passwords + // (Done with no echo and suitable for passwords - currently disabled) public string PasswdPrompt(string prompt) { // FIXME: Needs to be better abstracted System.Console.WriteLine(String.Format("{0}: ", prompt)); - ConsoleColor oldfg = System.Console.ForegroundColor; - System.Console.ForegroundColor = System.Console.BackgroundColor; + //ConsoleColor oldfg = System.Console.ForegroundColor; + //System.Console.ForegroundColor = System.Console.BackgroundColor; string temp = System.Console.ReadLine(); - System.Console.ForegroundColor = oldfg; + //System.Console.ForegroundColor = oldfg; return temp; } diff --git a/OpenSim/Framework/IUserService.cs b/OpenSim/Framework/IUserService.cs index f1f3c81438..3b84486e8f 100644 --- a/OpenSim/Framework/IUserService.cs +++ b/OpenSim/Framework/IUserService.cs @@ -32,9 +32,23 @@ namespace OpenSim.Framework { public interface IUserService { + /// + /// Loads a user profile by name + /// + /// First name + /// Last name + /// A user profile. Returns null if no profile is found UserProfileData GetUserProfile(string firstName, string lastName); + //UserProfileData GetUserProfile(string name); + + /// + /// Loads a user profile from a database by UUID + /// + /// The target UUID + /// A user profile. Returns null if no user profile is found. UserProfileData GetUserProfile(LLUUID userId); + void clearUserAgent(LLUUID avatarID); List GenerateAgentPickerRequestResponse(LLUUID QueryID, string Query); @@ -88,4 +102,4 @@ namespace OpenSim.Framework /// The agent that we're retreiving the friends Data. List GetUserFriendList(LLUUID friendlistowner); } -} \ No newline at end of file +} diff --git a/OpenSim/Grid/UserServer/Main.cs b/OpenSim/Grid/UserServer/Main.cs index 8c05d862dc..3500665d0a 100644 --- a/OpenSim/Grid/UserServer/Main.cs +++ b/OpenSim/Grid/UserServer/Main.cs @@ -148,6 +148,12 @@ namespace OpenSim.Grid.UserServer regX = Convert.ToUInt32(m_console.CmdPrompt("Start Region X")); regY = Convert.ToUInt32(m_console.CmdPrompt("Start Region Y")); + if (null != m_userManager.GetUserProfile(tempfirstname, templastname)) + { + m_log.ErrorFormat("[USERS]: A user with the name {0} {1} already exists!", tempfirstname, templastname); + break; + } + tempMD5Passwd = Util.Md5Hash(Util.Md5Hash(tempMD5Passwd) + ":" + String.Empty); LLUUID userID = new LLUUID(); @@ -157,7 +163,7 @@ namespace OpenSim.Grid.UserServer m_userManager.AddUserProfile(tempfirstname, templastname, tempMD5Passwd, regX, regY); } catch (Exception ex) { - m_log.ErrorFormat("[SERVER]: Error creating user: {0}", ex.ToString()); + m_log.ErrorFormat("[USERS]: Error creating user: {0}", ex.ToString()); } try @@ -167,7 +173,7 @@ namespace OpenSim.Grid.UserServer } catch (Exception ex) { - m_log.ErrorFormat("[SERVER]: Error creating inventory for user: {0}", ex.ToString()); + m_log.ErrorFormat("[USERS]: Error creating inventory for user: {0}", ex.ToString()); } m_lastCreatedUser = userID; break; @@ -204,13 +210,12 @@ namespace OpenSim.Grid.UserServer // RestObjectPosterResponse> requester = new RestObjectPosterResponse>(); // requester.ReturnResponseVal = TestResponse; // requester.BeginPostObject(m_userManager._config.InventoryUrl + "RootFolders/", m_lastCreatedUser); - List folders = - SynchronousRestObjectPoster.BeginPostObject>("POST", - m_userManager. - _config. - InventoryUrl + - "RootFolders/", - m_lastCreatedUser); + SynchronousRestObjectPoster.BeginPostObject>("POST", + m_userManager. + _config. + InventoryUrl + + "RootFolders/", + m_lastCreatedUser); break; } }