* Do not allow a user to be created if one with the same name already exists

ThreadPoolClientBranch
Justin Clarke Casey 2008-02-18 15:50:18 +00:00
parent 28c808446d
commit 500d259c25
5 changed files with 69 additions and 43 deletions

View File

@ -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;
}
}
/// <summary>
/// Persistently adds a user to OpenSim.
/// </summary>
/// <param name="firstName"></param>
/// <param name="lastName"></param>
/// <param name="password"></param>
/// <param name="regX"></param>
/// <param name="regY"></param>
/// <returns>The UUID of the added user. Returns null if the add was unsuccessful</returns>
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;
}
}

View File

@ -86,11 +86,24 @@ namespace OpenSim.Framework.UserManagement
#region Get UserProfile
/// <summary>
/// Loads a user profile from a database by UUID
/// </summary>
/// <param name="uuid">The target UUID</param>
/// <returns>A user profile. Returns null if no user profile is found.</returns>
// see IUserService
public UserProfileData GetUserProfile(string fname, string lname)
{
foreach (KeyValuePair<string, IUserData> 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<string, IUserData> plugin in _plugins)
@ -125,28 +138,6 @@ namespace OpenSim.Framework.UserManagement
return pickerlist;
}
/// <summary>
/// Loads a user profile by name
/// </summary>
/// <param name="fname">First name</param>
/// <param name="lname">Last name</param>
/// <returns>A user profile. Returns null if no profile is found</returns>
public UserProfileData GetUserProfile(string fname, string lname)
{
foreach (KeyValuePair<string, IUserData> plugin in _plugins)
{
UserProfileData profile = plugin.Value.GetUserByName(fname, lname);
if (profile != null)
{
profile.currentAgent = getUserAgent(profile.UUID);
return profile;
}
}
return null;
}
/// <summary>
/// Set's user profile from object
/// </summary>

View File

@ -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;
}

View File

@ -32,9 +32,23 @@ namespace OpenSim.Framework
{
public interface IUserService
{
/// <summary>
/// Loads a user profile by name
/// </summary>
/// <param name="fname">First name</param>
/// <param name="lname">Last name</param>
/// <returns>A user profile. Returns null if no profile is found</returns>
UserProfileData GetUserProfile(string firstName, string lastName);
//UserProfileData GetUserProfile(string name);
/// <summary>
/// Loads a user profile from a database by UUID
/// </summary>
/// <param name="uuid">The target UUID</param>
/// <returns>A user profile. Returns null if no user profile is found.</returns>
UserProfileData GetUserProfile(LLUUID userId);
void clearUserAgent(LLUUID avatarID);
List<AvatarPickerAvatar> GenerateAgentPickerRequestResponse(LLUUID QueryID, string Query);
@ -88,4 +102,4 @@ namespace OpenSim.Framework
/// <param name="friendlistowner">The agent that we're retreiving the friends Data.</param>
List<FriendListItem> GetUserFriendList(LLUUID friendlistowner);
}
}
}

View File

@ -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<List<InventoryFolderBase>> requester = new RestObjectPosterResponse<List<InventoryFolderBase>>();
// requester.ReturnResponseVal = TestResponse;
// requester.BeginPostObject<LLUUID>(m_userManager._config.InventoryUrl + "RootFolders/", m_lastCreatedUser);
List<InventoryFolderBase> folders =
SynchronousRestObjectPoster.BeginPostObject<LLUUID, List<InventoryFolderBase>>("POST",
m_userManager.
_config.
InventoryUrl +
"RootFolders/",
m_lastCreatedUser);
SynchronousRestObjectPoster.BeginPostObject<LLUUID, List<InventoryFolderBase>>("POST",
m_userManager.
_config.
InventoryUrl +
"RootFolders/",
m_lastCreatedUser);
break;
}
}