public bool UpdatePlayersPassword(string username, string old_password, string new_password) { try { TableServiceContext service_context = _client.GetDataServiceContext(); var p_pass_query = service_context.CreateQuery<Domain.Entities.PlayerPassword>(_player_password_table_name); var old_temp_player = new Domain.Entities.PlayerPassword(username, new_password); var old_hashedpass = old_temp_player.RowKey; var new_temp_player_pass = new Domain.Entities.PlayerPassword(username, new_password); var new_hashedpass = new_temp_player_pass.RowKey; //check if old pass works out string player_username = (from pp in p_pass_query where pp.PartitionKey == username.ToLower() && pp.RowKey == old_hashedpass select username).SingleOrDefault(); if (string.IsNullOrWhiteSpace(player_username)) { return false; } if (player_username.ToLower() == username.ToLower()) { service_context.UpdateObject(new_temp_player_pass); service_context.SaveChanges(); return true; } else { return false; } } catch { throw; } }
public Domain.Entities.Player CreatePlayerWithPassword(string username, string password, string device_id = null) { bool created_player = false; bool created_player_pass_link = false; Domain.Entities.Player player = null; Domain.Entities.PlayerPassword player_password = null; TableServiceContext service_context = _client.GetDataServiceContext(); username = username.ToLower(); try { if (IsUsernameAvailable(username)) { player = new Domain.Entities.Player(username); player.DeviceID = device_id; service_context.AddObject(_table_name, player); service_context.SaveChanges(); created_player = true; player_password = new Domain.Entities.PlayerPassword(username, password); service_context.AddObject(_player_password_table_name, player_password); service_context.SaveChanges(); created_player_pass_link = true; return player; } else { throw new ArgumentException("Username already registered.", "username"); } } catch { try { if (service_context != null) { //revert on any error if possible if (created_player) { service_context.DeleteObject(player); service_context.SaveChanges(); } if (created_player_pass_link && player_password != null) { service_context.DeleteObject(player_password); service_context.SaveChanges(); } } } catch { } throw; } }
public Domain.Entities.Player GetPlayerByUsernameAndPassword(string username, string password) { try { TableServiceContext service_context = _client.GetDataServiceContext(); var p_pass_query = service_context.CreateQuery<Domain.Entities.PlayerPassword>(_player_password_table_name); var temp_player = new Domain.Entities.PlayerPassword(username, password); var hashedpass = temp_player.RowKey; string player_username = (from pp in p_pass_query where pp.PartitionKey == username.ToLower() && pp.RowKey == hashedpass select username).SingleOrDefault(); if (string.IsNullOrWhiteSpace(player_username)) { return null; } var query = service_context.CreateQuery<Domain.Entities.Player>(_table_name); Domain.Entities.Player player = (from p in query where p.PartitionKey == player_username.Substring(0, 1).ToUpper() && p.RowKey == player_username select p).SingleOrDefault(); return player; } catch { throw; } }