diff --git a/.github/workflows/pr-first-response.yml b/.github/workflows/pr-first-response.yml index b2161c0d79..0969a883c9 100644 --- a/.github/workflows/pr-first-response.yml +++ b/.github/workflows/pr-first-response.yml @@ -1,12 +1,15 @@ name: pr-first-response on: - pull_request: + pull_request_target: types: [opened] jobs: send-response: runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write steps: - name: Install dependencies run: | diff --git a/src/Umbraco.Core/Services/MetricsConsentService.cs b/src/Umbraco.Core/Services/MetricsConsentService.cs index 3e93a34d8a..d494dbcf4b 100644 --- a/src/Umbraco.Core/Services/MetricsConsentService.cs +++ b/src/Umbraco.Core/Services/MetricsConsentService.cs @@ -1,5 +1,9 @@ using System; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Security; +using Umbraco.Cms.Web.Common.DependencyInjection; namespace Umbraco.Cms.Core.Services { @@ -8,10 +12,27 @@ namespace Umbraco.Cms.Core.Services internal const string Key = "UmbracoAnalyticsLevel"; private readonly IKeyValueService _keyValueService; + private readonly ILogger _logger; + private readonly IBackOfficeSecurityAccessor _backOfficeSecurityAccessor; + // Scheduled for removal in V12 + [Obsolete("Please use the constructor that takes and ILogger and IBackOfficeSecurity instead")] public MetricsConsentService(IKeyValueService keyValueService) + : this( + keyValueService, + StaticServiceProvider.Instance.GetRequiredService>(), + StaticServiceProvider.Instance.GetRequiredService()) + { + } + + public MetricsConsentService( + IKeyValueService keyValueService, + ILogger logger, + IBackOfficeSecurityAccessor backOfficeSecurityAccessor) { _keyValueService = keyValueService; + _logger = logger; + _backOfficeSecurityAccessor = backOfficeSecurityAccessor; } public TelemetryLevel GetConsentLevel() @@ -28,6 +49,8 @@ namespace Umbraco.Cms.Core.Services public void SetConsentLevel(TelemetryLevel telemetryLevel) { + var currentUser = _backOfficeSecurityAccessor.BackOfficeSecurity?.CurrentUser; + _logger.LogInformation("Telemetry level set to {telemetryLevel} by {username}", telemetryLevel, currentUser?.Username); _keyValueService.SetValue(Key, telemetryLevel.ToString()); } }