diff --git a/src/Umbraco.Web.BackOffice/Controllers/TwoFactorLoginController.cs b/src/Umbraco.Web.BackOffice/Controllers/TwoFactorLoginController.cs index dbfdac4ff9..627f1ec5c7 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/TwoFactorLoginController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/TwoFactorLoginController.cs @@ -72,7 +72,14 @@ namespace Umbraco.Cms.Web.BackOffice.Controllers var enabledProviderNameHashSet = new HashSet(await _twoFactorLoginService.GetEnabledTwoFactorProviderNamesAsync(user.Key)); - var providerNames = await _backOfficeUserManager.GetValidTwoFactorProvidersAsync(user); + IEnumerable providerNames = await _backOfficeUserManager.GetValidTwoFactorProvidersAsync(user); + + // Filter out any providers that does not have a view attached to it, since it's unusable then. + providerNames = providerNames.Where(providerName => + { + TwoFactorLoginViewOptions options = _twoFactorLoginViewOptions.Get(providerName); + return options is not null && !string.IsNullOrWhiteSpace(options.SetupViewPath); + }); return providerNames.Select(providerName => new UserTwoFactorProviderModel(providerName, enabledProviderNameHashSet.Contains(providerName))).ToArray(); diff --git a/tests/Umbraco.Tests.AcceptanceTest/cypress/integration/Languages/languages.ts b/tests/Umbraco.Tests.AcceptanceTest/cypress/integration/Languages/languages.ts index 33d5de24cb..ceb747a7bc 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/cypress/integration/Languages/languages.ts +++ b/tests/Umbraco.Tests.AcceptanceTest/cypress/integration/Languages/languages.ts @@ -13,7 +13,8 @@ context('Languages', () => { cy.umbracoEnsureLanguageCultureNotExists(culture); cy.umbracoSection('settings'); - cy.get('.umb-tree-root-link').contains('Settings') + cy.get('.umb-box-content').should('be.visible'); + cy.get('li .umb-tree-root:contains("Settings")').should("be.visible"); // Enter language tree and create new language cy.umbracoTreeItem('settings', ['Languages']).click(); cy.umbracoButtonByLabelKey('languages_addLanguage').click();