From 2da8bfba7d6ab9b0b2ab08603d20cd6f8c3eefe0 Mon Sep 17 00:00:00 2001 From: Paul Johnson Date: Wed, 1 Jun 2022 16:53:34 +0100 Subject: [PATCH] Fix unable to authorize upgrade from versions < 9.3.0 (#12519) (cherry picked from commit 97468896357083a18eb39893aebaf8f87d292ac6) --- .../Implement/TwoFactorLoginRepository.cs | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/TwoFactorLoginRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/TwoFactorLoginRepository.cs index b74063df9b..6fb33f8d7b 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/TwoFactorLoginRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/TwoFactorLoginRepository.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; +using Microsoft.Data.SqlClient; using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Cms.Core.Cache; @@ -129,12 +126,22 @@ namespace Umbraco.Cms.Infrastructure.Persistence.Repositories.Implement public async Task> GetByUserOrMemberKeyAsync(Guid userOrMemberKey) { - var sql = Sql() - .Select() - .From() - .Where(x => x.UserOrMemberKey == userOrMemberKey); - var dtos = await Database.FetchAsync(sql); - return dtos.WhereNotNull().Select(Map).WhereNotNull(); + try + { + var sql = Sql() + .Select() + .From() + .Where(x => x.UserOrMemberKey == userOrMemberKey); + var dtos = await Database.FetchAsync(sql); + return dtos.WhereNotNull().Select(Map).WhereNotNull(); + } + + // TODO (v11): Remove this as the table should always exist when upgrading from 10.x + // SQL Server - table doesn't exist, likely upgrading from < 9.3.0. + catch (SqlException ex) when (ex.Number == 208 && ex.Message.Contains(TwoFactorLoginDto.TableName)) + { + return Enumerable.Empty(); + } } } }