Fix #4936: add the cookie consent theme control.

This commit is contained in:
Ben
2025-02-22 09:49:33 +08:00
parent 7a4ea8cf1b
commit 982f3b1943
14 changed files with 322 additions and 0 deletions

View File

@ -0,0 +1,38 @@
using System;
using System.Diagnostics.Contracts;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Features;
using Microsoft.AspNetCore.Localization;
using Oqtane.Documentation;
namespace Oqtane.Services
{
[PrivateApi("Don't show in the documentation, as everything should use the Interface")]
public class ServerCookieConsentService : ICookieConsentService
{
private readonly IHttpContextAccessor _accessor;
public ServerCookieConsentService(IHttpContextAccessor accessor)
{
_accessor = accessor;
}
public Task<bool> CanTrackAsync()
{
var consentFeature = _accessor.HttpContext?.Features.Get<ITrackingConsentFeature>();
var canTrack = consentFeature?.CanTrack ?? true;
return Task.FromResult(canTrack);
}
public Task<string> CreateConsentCookieAsync()
{
var consentFeature = _accessor.HttpContext?.Features.Get<ITrackingConsentFeature>();
consentFeature?.GrantConsent();
var cookie = consentFeature?.CreateConsentCookie() ?? string.Empty;
return Task.FromResult(cookie);
}
}
}