From e15bddcc397f0a7b90caae93eabd651f1eb4e0cb Mon Sep 17 00:00:00 2001 From: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Date: Mon, 15 Apr 2024 10:26:49 +0200 Subject: [PATCH] Set invite users to false if deny local login is true (#16043) --- .../Factories/UserPresentationFactory.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Cms.Api.Management/Factories/UserPresentationFactory.cs b/src/Umbraco.Cms.Api.Management/Factories/UserPresentationFactory.cs index 76fde6af7e..bb4b8e5c3c 100644 --- a/src/Umbraco.Cms.Api.Management/Factories/UserPresentationFactory.cs +++ b/src/Umbraco.Cms.Api.Management/Factories/UserPresentationFactory.cs @@ -1,5 +1,6 @@ using Umbraco.Cms.Api.Management.Routing; using Microsoft.Extensions.Options; +using Umbraco.Cms.Api.Management.Security; using Umbraco.Cms.Api.Management.ViewModels.User; using Umbraco.Cms.Api.Management.ViewModels.User.Current; using Umbraco.Cms.Core.Cache; @@ -25,6 +26,7 @@ public class UserPresentationFactory : IUserPresentationFactory private readonly IAbsoluteUrlBuilder _absoluteUrlBuilder; private readonly IEmailSender _emailSender; private readonly IPasswordConfigurationPresentationFactory _passwordConfigurationPresentationFactory; + private readonly IBackOfficeExternalLoginProviders _externalLoginProviders; private readonly SecuritySettings _securitySettings; public UserPresentationFactory( @@ -36,7 +38,8 @@ public class UserPresentationFactory : IUserPresentationFactory IAbsoluteUrlBuilder absoluteUrlBuilder, IEmailSender emailSender, IPasswordConfigurationPresentationFactory passwordConfigurationPresentationFactory, - IOptionsSnapshot securitySettings) + IOptionsSnapshot securitySettings, + IBackOfficeExternalLoginProviders externalLoginProviders) { _entityService = entityService; _appCaches = appCaches; @@ -45,6 +48,7 @@ public class UserPresentationFactory : IUserPresentationFactory _userGroupPresentationFactory = userGroupPresentationFactory; _emailSender = emailSender; _passwordConfigurationPresentationFactory = passwordConfigurationPresentationFactory; + _externalLoginProviders = externalLoginProviders; _securitySettings = securitySettings.Value; _absoluteUrlBuilder = absoluteUrlBuilder; } @@ -130,7 +134,8 @@ public class UserPresentationFactory : IUserPresentationFactory public Task CreateUserConfigurationModelAsync() => Task.FromResult(new UserConfigurationResponseModel { - CanInviteUsers = _emailSender.CanSendRequiredEmail(), + // You should not be able to invite users if any providers has deny local login set. + CanInviteUsers = _emailSender.CanSendRequiredEmail() && _externalLoginProviders.HasDenyLocalLogin() is false, PasswordConfiguration = _passwordConfigurationPresentationFactory.CreatePasswordConfigurationResponseModel(), });