void TryCreateCharacter(int gender) { if (Globals.WaitingOnServer || mDisplaySpriteIndex == -1) { return; } if (FieldChecking.IsValidUsername(mCharnameTextbox.Text, Strings.Regex.username)) { if (mMaleChk.IsChecked) { PacketSender.SendCreateCharacter( mCharnameTextbox.Text, GetClass().Id, mMaleSprites[mDisplaySpriteIndex].Key ); } else { PacketSender.SendCreateCharacter( mCharnameTextbox.Text, GetClass().Id, mFemaleSprites[mDisplaySpriteIndex].Key ); } Globals.WaitingOnServer = true; ChatboxMsg.ClearMessages(); } else { Interface.MsgboxErrors.Add(new KeyValuePair <string, string>("", Strings.CharacterCreation.invalidname)); } }
public object ChangeNameById(Guid userId, [FromBody] NameChange change) { if (!FieldChecking.IsValidUsername(change.Name, Strings.Regex.username)) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Invalid name." )); } if (Database.PlayerData.User.UserExists(change.Name)) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Name already taken." )); } var user = Database.PlayerData.User.Find(userId); if (user == null) { return(Request.CreateErrorResponse(HttpStatusCode.NotFound, $@"No user with id '{userId}'.")); } user.Name = change.Name; user.Save(); return(user); }
public object UserChangeEmailById(Guid userId, [FromBody] AdminChange authorizedChange) { var email = authorizedChange.New; if (string.IsNullOrWhiteSpace(email)) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, $@"Malformed email address '{email}'.")); } if (!FieldChecking.IsWellformedEmailAddress(email, Strings.Regex.email)) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, $@"Malformed email address '{email}'.")); } var user = Database.PlayerData.User.Find(userId); if (user == null) { return(Request.CreateErrorResponse(HttpStatusCode.NotFound, $@"No user with id '{userId}'.")); } if (Database.PlayerData.User.UserExists(email)) { return(Request.CreateErrorResponse(HttpStatusCode.Conflict, @"Email address already in use.")); } user.Email = email; user.Save(); return(user); }
public object ChangeName(Guid guildId, [FromBody] NameChange change) { if (!FieldChecking.IsValidGuildName(change.Name, Strings.Regex.guildname)) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Invalid guild name." )); } var guild = Guild.LoadGuild(guildId); if (guild != null) { if (guild.Rename(change.Name)) { return(guild); } else { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Invalid name, or name already taken." )); } } return(Request.CreateErrorResponse( HttpStatusCode.NotFound, $@"No guild with id '{guildId}'." )); }
public object RegisterUser([FromBody] UserInfo user) { if (string.IsNullOrEmpty(user.Username) || string.IsNullOrEmpty(user.Email) || string.IsNullOrEmpty(user.Password)) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Username, Email, and Password all must be provided, and not null/empty." )); } if (!FieldChecking.IsWellformedEmailAddress(user.Email, Strings.Regex.email)) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Malformed email address '{user.Email}'." )); } if (!FieldChecking.IsValidUsername(user.Username, Strings.Regex.username)) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, $@"Invalid username '{user.Username}'.")); } if (Database.PlayerData.User.UserExists(user.Username)) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Account already exists with username '{user.Username}'." )); } else { if (Database.PlayerData.User.UserExists(user.Email)) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Account already with email '{user.Email}'." )); } else { DbInterface.CreateAccount(null, user.Username, user.Password.ToUpper().Trim(), user.Email); return(new { Username = user.Username, Email = user.Email, }); } } }
/// <summary> /// Create a new Guild instance. /// </summary> /// <param name="creator">The <see cref="Player"/> that created the guild.</param> /// <param name="name">The Name of the guild.</param> public static Guild CreateGuild(Player creator, string name) { name = name.Trim(); if (creator != null && FieldChecking.IsValidGuildName(name, Strings.Regex.guildname)) { using (var context = DbInterface.CreatePlayerContext(readOnly: false)) { var guild = new Guild() { Name = name, FoundingDate = DateTime.UtcNow }; SlotHelper.ValidateSlots(guild.Bank, Options.Instance.Guild.GuildBankSlots); guild.Bank = guild.Bank.OrderBy(bankSlot => bankSlot?.Slot).ToList(); var player = context.Players.FirstOrDefault(p => p.Id == creator.Id); if (player != null) { player.DbGuild = guild; player.GuildRank = 0; player.GuildJoinDate = DateTime.UtcNow; context.ChangeTracker.DetectChanges(); context.SaveChanges(); var member = new GuildMember(player.Id, player.Name, player.GuildRank, player.Level, player.ClassName, player.MapName); guild.Members.AddOrUpdate(player.Id, member, (key, oldValue) => member); creator.Guild = guild; creator.GuildRank = 0; creator.GuildJoinDate = DateTime.UtcNow; // Send our entity data to nearby players. PacketSender.SendEntityDataToProximity(Player.FindOnline(creator.Id)); Guilds.AddOrUpdate(guild.Id, guild, (key, oldValue) => guild); LogActivity(guild.Id, creator, null, GuildActivityType.Created, name); return(guild); } } } return(null); }
public object ChangeName(LookupKey lookupKey, [FromBody] NameChange change) { if (lookupKey.IsInvalid) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, lookupKey.IsIdInvalid ? @"Invalid player id." : @"Invalid player name." )); } if (!FieldChecking.IsValidUsername(change.Name, Strings.Regex.username)) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Invalid name." )); } if (Player.PlayerExists(change.Name)) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Name already taken." )); } var(client, player) = Player.Fetch(lookupKey); if (player != null) { player.Name = change.Name; if (player.Online) { PacketSender.SendEntityDataToProximity(player); } using (var context = DbInterface.CreatePlayerContext(false)) { context.Update(player); context.SaveChanges(); } return(player); } return(Request.CreateErrorResponse( HttpStatusCode.NotFound, lookupKey.HasId ? $@"No player with id '{lookupKey.Id}'." : $@"No player with name '{lookupKey.Name}'." )); }
public void TrySendCode() { if (Globals.WaitingOnServer) { return; } if (!Networking.Network.Connected) { Interface.MsgboxErrors.Add(new KeyValuePair <string, string>("", Strings.Errors.notconnected)); return; } if (string.IsNullOrEmpty(mCodeInputTextbox?.Text)) { Interface.MsgboxErrors.Add(new KeyValuePair <string, string>("", Strings.ResetPass.inputcode)); return; } if (mPasswordTextbox.Text != mPasswordTextbox2.Text) { Interface.MsgboxErrors.Add(new KeyValuePair <string, string>("", Strings.Registration.passwordmatch)); return; } if (!FieldChecking.IsValidPassword(mPasswordTextbox.Text, Strings.Regex.password)) { Interface.MsgboxErrors.Add(new KeyValuePair <string, string>("", Strings.Errors.passwordinvalid)); return; } using (var sha = new SHA256Managed()) { PacketSender.SendResetPassword( Target, mCodeInputTextbox?.Text, BitConverter.ToString(sha.ComputeHash(Encoding.UTF8.GetBytes(mPasswordTextbox.Text.Trim()))) .Replace("-", "") ); } Globals.WaitingOnServer = true; ChatboxMsg.ClearMessages(); }
/// <summary> /// Renames this guild and then saves the new name to the db /// </summary> /// <param name="name"></param> /// <param name="initiator">The player who initiated this change (null if done by the api or some other method).</param> public bool Rename(string name, Player initiator = null) { if (GuildExists(name) || !FieldChecking.IsValidGuildName(name, Strings.Regex.guildname)) { return(false); } Name = name; foreach (var member in FindOnlineMembers()) { PacketSender.SendEntityDataToProximity(member); } LogActivity(Id, initiator, null, GuildActivityType.Rename, name); Save(); return(true); }
void TryCreateCharacter(int gender) { if (Globals.WaitingOnServer || mDisplaySpriteIndex == -1) { return; } if (FieldChecking.IsValidUsername(mCharnameTextbox.Text, Strings.Regex.username)) { var customSpriteLayers = new int[(int)Enums.CustomSpriteLayers.CustomCount]; if (mMaleChk.IsChecked) { // Add our custom layers to the packet. for (var i = 0; i < (int)Enums.CustomSpriteLayers.CustomCount; i++) { var layer = (Enums.CustomSpriteLayers)i; customSpriteLayers[i] = mDisplayCustomSpriteLayerIndex[i] != -1 ? mMaleCustomSpriteLayers[layer][mDisplayCustomSpriteLayerIndex[i]].Key : -1; } PacketSender.SendCreateCharacter( mCharnameTextbox.Text, GetClass().Id, mMaleSprites[mDisplaySpriteIndex].Key, customSpriteLayers ); } else { // Add our custom layers to the packet. for (var i = 0; i < (int)Enums.CustomSpriteLayers.CustomCount; i++) { var layer = (Enums.CustomSpriteLayers)i; customSpriteLayers[i] = mDisplayCustomSpriteLayerIndex[i] != -1 ? mFemaleCustomSpriteLayers[layer][mDisplayCustomSpriteLayerIndex[i]].Key : -1; } PacketSender.SendCreateCharacter( mCharnameTextbox.Text, GetClass().Id, mFemaleSprites[mDisplaySpriteIndex].Key, customSpriteLayers ); } Globals.WaitingOnServer = true; ChatboxMsg.ClearMessages(); } else { Interface.MsgboxErrors.Add(new KeyValuePair <string, string>("", Strings.CharacterCreation.invalidname)); } }
public void TryLogin() { if (Globals.WaitingOnServer) { return; } if (!Networking.Network.Connected) { Interface.MsgboxErrors.Add(new KeyValuePair <string, string>("", Strings.Errors.notconnected)); return; } if (!FieldChecking.IsValidUsername(mUsernameTextbox?.Text, Strings.Regex.username)) { Interface.MsgboxErrors.Add(new KeyValuePair <string, string>("", Strings.Errors.usernameinvalid)); return; } if (!FieldChecking.IsValidPassword(mPasswordTextbox?.Text, Strings.Regex.password)) { if (!mUseSavedPass) { Interface.MsgboxErrors.Add(new KeyValuePair <string, string>("", Strings.Errors.passwordinvalid)); return; } } var password = mSavedPass; if (!mUseSavedPass) { password = ComputePasswordHash(mPasswordTextbox?.Text?.Trim()); } PacketSender.SendLogin(mUsernameTextbox?.Text, password); SaveCredentials(); Globals.WaitingOnServer = true; mLoginBtn.Disable(); ChatboxMsg.ClearMessages(); }
public void TrySendCode() { if (!Networking.Network.Connected) { Interface.MsgboxErrors.Add(new KeyValuePair <string, string>("", Strings.Errors.notconnected)); return; } if (!FieldChecking.IsValidUsername(mInputTextbox?.Text, Strings.Regex.username) && !FieldChecking.IsWellformedEmailAddress(mInputTextbox?.Text, Strings.Regex.email)) { Interface.MsgboxErrors.Add(new KeyValuePair <string, string>("", Strings.Errors.usernameinvalid)); return; } Interface.MenuUi.MainMenu.OpenResetPassword(mInputTextbox?.Text); PacketSender.SendRequestPasswordReset(mInputTextbox?.Text); }
public object UserChangeEmailById(Guid userId, [FromBody] AuthorizedChange authorizedChange) { var email = authorizedChange.New; if (string.IsNullOrWhiteSpace(email)) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, $@"Malformed email address '{email}'.")); } if (!FieldChecking.IsWellformedEmailAddress(email, Strings.Regex.email)) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, $@"Malformed email address '{email}'.")); } var user = Database.PlayerData.User.Find(userId); if (user == null) { return(Request.CreateErrorResponse(HttpStatusCode.NotFound, $@"No user with id '{userId}'.")); } if (!user.IsPasswordValid(authorizedChange.Authorization.ToUpper().Trim())) { return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, @"Invalid credentials.")); } if (DbInterface.EmailInUse(email)) { return(Request.CreateErrorResponse(HttpStatusCode.Conflict, @"Email address already in use.")); } user.Email = email; DbInterface.SavePlayerDatabaseAsync(); return(user); }
void TryRegister() { if (Globals.WaitingOnServer) { return; } if (Networking.Network.Connected) { if (FieldChecking.IsValidUsername(mUsernameTextbox.Text, Strings.Regex.username)) { if (mPasswordTextbox.Text == mPasswordTextbox2.Text) { if (FieldChecking.IsValidPassword(mPasswordTextbox.Text, Strings.Regex.password)) { if (FieldChecking.IsWellformedEmailAddress(mEmailTextbox.Text, Strings.Regex.email)) { Hide(); //Hash Password using (var sha = new SHA256Managed()) { var hashedPass = BitConverter.ToString( sha.ComputeHash(Encoding.UTF8.GetBytes(mPasswordTextbox.Text.Trim())) ) .Replace("-", ""); PacketSender.SendCreateAccount( mUsernameTextbox.Text, hashedPass, mEmailTextbox.Text ); } Globals.WaitingOnServer = true; mRegisterBtn.Disable(); ChatboxMsg.ClearMessages(); } else { Interface.MsgboxErrors.Add( new KeyValuePair <string, string>("", Strings.Registration.emailinvalid) ); } } else { Interface.MsgboxErrors.Add( new KeyValuePair <string, string>("", Strings.Errors.passwordinvalid) ); } } else { Interface.MsgboxErrors.Add( new KeyValuePair <string, string>("", Strings.Registration.passwordmatch) ); } } else { Interface.MsgboxErrors.Add(new KeyValuePair <string, string>("", Strings.Errors.usernameinvalid)); } } else { Interface.MsgboxErrors.Add(new KeyValuePair <string, string>("", Strings.Errors.notconnected)); } }