diff --git a/src/Umbraco.Web.Common/Security/MemberSignInManager.cs b/src/Umbraco.Web.Common/Security/MemberSignInManager.cs index a624129bab..4517a0d865 100644 --- a/src/Umbraco.Web.Common/Security/MemberSignInManager.cs +++ b/src/Umbraco.Web.Common/Security/MemberSignInManager.cs @@ -303,19 +303,16 @@ public class MemberSignInManager : UmbracoSignInManager, IMe return await SignInOrTwoFactorAsync(autoLinkUser, false, loginInfo.LoginProvider); } - // If this fails, we should really delete the user since it will be in an inconsistent state! - IdentityResult? deleteResult = await UserManager.DeleteAsync(autoLinkUser); - if (deleteResult.Succeeded) - { - var errors = linkResult.Errors.Select(x => x.Description).ToList(); - return AutoLinkSignInResult.FailedLinkingUser(errors); - } - else - { - // DOH! ... this isn't good, combine all errors to be shown - var errors = linkResult.Errors.Concat(deleteResult.Errors).Select(x => x.Description).ToList(); - return AutoLinkSignInResult.FailedLinkingUser(errors); - } + // If this fails, we should disapprove the member,as it is now in an inconsistent state. + return await HandleFailedLinkingUser(autoLinkUser, linkResult); + } + + protected Task HandleFailedLinkingUser(MemberIdentityUser autoLinkUser, IdentityResult linkResult) + { + var errors = linkResult.Errors.Select(x => x.Description).ToList(); + + Logger.LogError("Failed to external link user. The following errors happened: {errors}", errors); + return Task.FromResult(AutoLinkSignInResult.FailedLinkingUser(errors)); } private void LogFailedExternalLogin(ExternalLoginInfo loginInfo, MemberIdentityUser user) =>