public Player GetPlayerByLogin(string name, string password) { var connection = _databaseService.GetConnection(); var data = connection.QueryFirstOrDefault <UserAuthentication>( "SELECT id, hash FROM players WHERE name = @name", new { name }); connection.Close(); if (data == null) { return(null); } var playerId = data.Id; var playerHash = data.Hash; if (!Pbkdf2.ValidatePassword(password, playerHash)) { return(null); } var iterations = Pbkdf2.GetHashIterations(playerHash); if (iterations != Pbkdf2.Pbkdf2Iterations) { var hash = Pbkdf2.HashPassword(password); UpdateHash(playerId, hash); } return(GetPlayerById(playerId)); }