diff --git a/src/Umbraco.Core/Constants-Telemetry.cs b/src/Umbraco.Core/Constants-Telemetry.cs index 0fc2cb1612..64ce58b2f5 100644 --- a/src/Umbraco.Core/Constants-Telemetry.cs +++ b/src/Umbraco.Core/Constants-Telemetry.cs @@ -28,5 +28,6 @@ public static partial class Constants public static string IsDebug = "IsDebug"; public static string DatabaseProvider = "DatabaseProvider"; public static string CurrentServerRole = "CurrentServerRole"; + public static string BackofficeExternalLoginProviderCount = "BackofficeExternalLoginProviderCount"; } } diff --git a/src/Umbraco.Core/EmbeddedResources/Lang/en_us.xml b/src/Umbraco.Core/EmbeddedResources/Lang/en_us.xml index 15382310e5..46c7dad6cd 100644 --- a/src/Umbraco.Core/EmbeddedResources/Lang/en_us.xml +++ b/src/Umbraco.Core/EmbeddedResources/Lang/en_us.xml @@ -3005,7 +3005,7 @@ To manage your website, simply open the Umbraco backoffice and start adding cont We will send: diff --git a/src/Umbraco.Infrastructure/Telemetry/Interfaces/IDetailedTelemetryProvider.cs b/src/Umbraco.Infrastructure/Telemetry/Interfaces/IDetailedTelemetryProvider.cs index b21b216e68..e6ce3b005f 100644 --- a/src/Umbraco.Infrastructure/Telemetry/Interfaces/IDetailedTelemetryProvider.cs +++ b/src/Umbraco.Infrastructure/Telemetry/Interfaces/IDetailedTelemetryProvider.cs @@ -2,7 +2,7 @@ using Umbraco.Cms.Core.Models; namespace Umbraco.Cms.Infrastructure.Telemetry.Interfaces; -internal interface IDetailedTelemetryProvider +public interface IDetailedTelemetryProvider { IEnumerable GetInformation(); } diff --git a/src/Umbraco.Web.BackOffice/DependencyInjection/UmbracoBuilder.BackOfficeIdentity.cs b/src/Umbraco.Web.BackOffice/DependencyInjection/UmbracoBuilder.BackOfficeIdentity.cs index 6d3ff7edda..1844cf5885 100644 --- a/src/Umbraco.Web.BackOffice/DependencyInjection/UmbracoBuilder.BackOfficeIdentity.cs +++ b/src/Umbraco.Web.BackOffice/DependencyInjection/UmbracoBuilder.BackOfficeIdentity.cs @@ -11,7 +11,9 @@ using Umbraco.Cms.Core.Scoping; using Umbraco.Cms.Core.Security; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Infrastructure.Security; +using Umbraco.Cms.Infrastructure.Telemetry.Interfaces; using Umbraco.Cms.Web.BackOffice.Security; +using Umbraco.Cms.Web.BackOffice.Telemetry; using Umbraco.Cms.Web.Common.AspNetCore; using Umbraco.Cms.Web.Common.Security; @@ -65,6 +67,7 @@ public static partial class UmbracoBuilderExtensions services.TryAddScoped(); services.TryAddSingleton(); services.TryAddSingleton(); + services.AddTransient(); return new BackOfficeIdentityBuilder(services); } diff --git a/src/Umbraco.Web.BackOffice/Telemetry/ExternalLoginTelemetryProvider.cs b/src/Umbraco.Web.BackOffice/Telemetry/ExternalLoginTelemetryProvider.cs new file mode 100644 index 0000000000..21a59796b3 --- /dev/null +++ b/src/Umbraco.Web.BackOffice/Telemetry/ExternalLoginTelemetryProvider.cs @@ -0,0 +1,22 @@ +using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Infrastructure.Telemetry.Interfaces; +using Umbraco.Cms.Web.BackOffice.Security; + +namespace Umbraco.Cms.Web.BackOffice.Telemetry; + +public class ExternalLoginTelemetryProvider : IDetailedTelemetryProvider +{ + private readonly IBackOfficeExternalLoginProviders _externalLoginProviders; + + public ExternalLoginTelemetryProvider(IBackOfficeExternalLoginProviders externalLoginProviders) + { + _externalLoginProviders = externalLoginProviders; + } + + public IEnumerable GetInformation() + { + IEnumerable providers = _externalLoginProviders.GetBackOfficeProvidersAsync().GetAwaiter().GetResult(); + yield return new UsageInformation(Constants.Telemetry.BackofficeExternalLoginProviderCount, providers.Count()); + } +} diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Core/Telemetry/TelemetryServiceTests.cs b/tests/Umbraco.Tests.Integration/Umbraco.Core/Telemetry/TelemetryServiceTests.cs index 2acb31a5a0..4abfefc7e1 100644 --- a/tests/Umbraco.Tests.Integration/Umbraco.Core/Telemetry/TelemetryServiceTests.cs +++ b/tests/Umbraco.Tests.Integration/Umbraco.Core/Telemetry/TelemetryServiceTests.cs @@ -49,7 +49,8 @@ public class TelemetryServiceTests : UmbracoIntegrationTest Constants.Telemetry.AspEnvironment, Constants.Telemetry.IsDebug, Constants.Telemetry.DatabaseProvider, - Constants.Telemetry.CurrentServerRole + Constants.Telemetry.CurrentServerRole, + Constants.Telemetry.BackofficeExternalLoginProviderCount }; MetricsConsentService.SetConsentLevel(TelemetryLevel.Detailed);