From a4581f0c527003440d7a062c3a08b5e01da77324 Mon Sep 17 00:00:00 2001
From: Project-Update-bot <updatebot@assosiation.drupal.org>
Date: Sat, 26 Oct 2024 14:54:13 +0000
Subject: [PATCH 1/2] Automated Project Update Bot fixes from run 11-321467.

---
 micro_site.info.yml                                           | 2 +-
 src/EventSubscriber/NodeSubscriber.php                        | 2 +-
 src/EventSubscriber/Shield.php                                | 2 +-
 src/EventSubscriber/SiteRedirectSubscriber.php                | 2 +-
 .../Constraint/RegisteredFieldConstraintValidator.php         | 2 +-
 src/StackMiddleware/MicroSiteMiddleware.php                   | 4 ++--
 6 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/micro_site.info.yml b/micro_site.info.yml
index cb0d5b4..a001fa7 100644
--- a/micro_site.info.yml
+++ b/micro_site.info.yml
@@ -1,7 +1,7 @@
 name: 'Micro site'
 type: module
 description: 'Provide the content entity type site.'
-core_version_requirement: ^9.2 || ^10
+core_version_requirement: ^10.1 || ^11
 package: 'Micro Site'
 configure: micro_site.settings
 dependencies:
diff --git a/src/EventSubscriber/NodeSubscriber.php b/src/EventSubscriber/NodeSubscriber.php
index 06b0b5a..d398a40 100644
--- a/src/EventSubscriber/NodeSubscriber.php
+++ b/src/EventSubscriber/NodeSubscriber.php
@@ -70,7 +70,7 @@ class NodeSubscriber implements EventSubscriberInterface {
   /**
    * {@inheritdoc}
    */
-  public static function getSubscribedEvents() {
+  public static function getSubscribedEvents(): array {
     $events[KernelEvents::REQUEST] = array('onRequest');
     return $events;
   }
diff --git a/src/EventSubscriber/Shield.php b/src/EventSubscriber/Shield.php
index f12668a..44d176f 100644
--- a/src/EventSubscriber/Shield.php
+++ b/src/EventSubscriber/Shield.php
@@ -49,7 +49,7 @@ class Shield implements EventSubscriberInterface {
   /**
    * {@inheritdoc}
    */
-  static function getSubscribedEvents() {
+  static function getSubscribedEvents(): array {
     $events[KernelEvents::REQUEST][] = array('ShieldLoad', 300);
     return $events;
   }
diff --git a/src/EventSubscriber/SiteRedirectSubscriber.php b/src/EventSubscriber/SiteRedirectSubscriber.php
index 04abd15..baea551 100644
--- a/src/EventSubscriber/SiteRedirectSubscriber.php
+++ b/src/EventSubscriber/SiteRedirectSubscriber.php
@@ -81,7 +81,7 @@ class SiteRedirectSubscriber implements EventSubscriberInterface {
   /**
    * {@inheritdoc}
    */
-  public static function getSubscribedEvents() {
+  public static function getSubscribedEvents(): array {
     $events[KernelEvents::REQUEST] = array('onKernelRequestSite', 50);
     return $events;
   }
diff --git a/src/Plugin/Validation/Constraint/RegisteredFieldConstraintValidator.php b/src/Plugin/Validation/Constraint/RegisteredFieldConstraintValidator.php
index 6ea3b19..5cabb99 100644
--- a/src/Plugin/Validation/Constraint/RegisteredFieldConstraintValidator.php
+++ b/src/Plugin/Validation/Constraint/RegisteredFieldConstraintValidator.php
@@ -32,7 +32,7 @@ class RegisteredFieldConstraintValidator extends ConstraintValidator {
       }
       // We cannot know which Guzzle Exception class will be returned; be generic.
       catch (RequestException $e) {
-        watchdog_exception('micro_site', $e);
+        \Drupal\Component\Utility\DeprecationHelper::backwardsCompatibleCall(\Drupal::VERSION, '10.1.0', fn() => \Drupal\Core\Utility\Error::logException(\Drupal::logger('micro_site'), $e), fn() => watchdog_exception('micro_site', $e));
         // File a general server failure.
         $this->context->addViolation($constraint->message, [
           '%value' => $entity->getSiteUrl(),
diff --git a/src/StackMiddleware/MicroSiteMiddleware.php b/src/StackMiddleware/MicroSiteMiddleware.php
index 58c51e9..218a090 100644
--- a/src/StackMiddleware/MicroSiteMiddleware.php
+++ b/src/StackMiddleware/MicroSiteMiddleware.php
@@ -45,7 +45,7 @@ class MicroSiteMiddleware implements HttpKernelInterface {
   /**
    * {@inheritdoc}
    */
-  public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = TRUE) {
+  public function handle(Request $request, $type = self::MAIN_REQUEST, $catch = TRUE) {
     $active_site = $this->negotiator->getActiveSite();
     if (empty($active_site)) {
       return $this->httpKernel->handle($request, $type, $catch);
@@ -60,7 +60,7 @@ class MicroSiteMiddleware implements HttpKernelInterface {
       $pass = $active_site->getSiteShieldPassword();
     }
 
-    if ($type != self::MASTER_REQUEST || !$shield_enabled || !$user || PHP_SAPI === 'cli') {
+    if ($type != self::MAIN_REQUEST || !$shield_enabled || !$user || PHP_SAPI === 'cli') {
       // Bypass:
       // 1. Subrequests
       // 2. Empty username
-- 
GitLab


From 4fc03c5b9729d3923bf6041a6572a77311fcf84d Mon Sep 17 00:00:00 2001
From: PAC <pac@makina-corpus.com>
Date: Tue, 1 Apr 2025 17:46:26 +0200
Subject: [PATCH 2/2] Add global route cache contexts with an EventSubscriber
 (to avoid https://www.drupal.org/project/drupal/issues/3452181).

---
 micro_site.services.yml                   |  6 ++++
 src/EventSubscriber/RequestSubscriber.php | 41 +++++++++++++++++++++++
 src/MicroSiteServiceProvider.php          | 15 ---------
 3 files changed, 47 insertions(+), 15 deletions(-)
 create mode 100644 src/EventSubscriber/RequestSubscriber.php

diff --git a/micro_site.services.yml b/micro_site.services.yml
index d8606b4..a33c28b 100644
--- a/micro_site.services.yml
+++ b/micro_site.services.yml
@@ -52,3 +52,9 @@ services:
     class: \Drupal\micro_site\SiteConfigOverrides
     tags:
       - {name: config.factory.override, priority: 100}
+
+  micro_site.request_subscriber:
+    class: Drupal\micro_site\EventSubscriber\RequestSubscriber
+    arguments: ['@router.route_provider', '@current_user', '@request_stack']
+    tags:
+      - { name: event_subscriber }
diff --git a/src/EventSubscriber/RequestSubscriber.php b/src/EventSubscriber/RequestSubscriber.php
new file mode 100644
index 0000000..972d503
--- /dev/null
+++ b/src/EventSubscriber/RequestSubscriber.php
@@ -0,0 +1,41 @@
+<?php
+
+namespace Drupal\micro_site\EventSubscriber;
+
+use Drupal\Core\Routing\CacheableRouteProviderInterface;
+use Drupal\Core\Routing\RouteProviderInterface;
+use Drupal\Core\Session\AccountInterface;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+use Symfony\Component\HttpFoundation\RequestStack;
+use Symfony\Component\HttpKernel\Event\RequestEvent;
+use Symfony\Component\HttpKernel\KernelEvents;
+
+class RequestSubscriber implements EventSubscriberInterface {
+  public function __construct(
+    protected RouteProviderInterface $routeProvider,
+    protected AccountInterface $currentUser,
+    protected RequestStack $requestStack,
+  ) {
+  }
+
+  public static function getSubscribedEvents(): array
+  {
+    return [
+      // Use a priority of 33 to run before Symfony's router listener.
+      // @see `\Symfony\Component\HttpKernel\EventListener\RouterListener::getSubscribedEvents`
+      KernelEvents::REQUEST => ['onRequest', 33],
+    ];
+  }
+
+  public function onRequest(RequestEvent $event): void
+  {
+    if ($this->routeProvider instanceof CacheableRouteProviderInterface) {
+      // Mimics `\Drupal\Core\Cache\Context\UserCacheContext::getContext`.
+      $this->routeProvider->addExtraCacheKeyPart('user', $this->currentUser->id());
+
+      $request = $event->getRequest();
+      // Mimics `\Drupal\Core\Cache\Context\SiteCacheContext::getContext`.
+      $this->routeProvider->addExtraCacheKeyPart('url.site', $request->getSchemeAndHttpHost() . $request->getBaseUrl());
+    }
+  }
+}
diff --git a/src/MicroSiteServiceProvider.php b/src/MicroSiteServiceProvider.php
index 0715481..d0258bd 100644
--- a/src/MicroSiteServiceProvider.php
+++ b/src/MicroSiteServiceProvider.php
@@ -23,21 +23,6 @@ class MicroSiteServiceProvider extends ServiceProviderBase implements ServiceMod
   public function alter(ContainerBuilder $container) {
     $definition = $container->getDefinition('router.route_provider');
     $definition->setClass(SiteRouteProvider::class);
-
-    if ($container->hasParameter('renderer.config')) {
-      $renderer_config = $container->getParameter('renderer.config');
-
-      if (!in_array('url.site', $renderer_config['required_cache_contexts'])) {
-        $renderer_config['required_cache_contexts'][] = 'url.site';
-      }
-      // Permissions related to site context are based on user referenced by site.
-      // We need so to add the user as a cache context.
-      if (!in_array('user', $renderer_config['required_cache_contexts'])) {
-        $renderer_config['required_cache_contexts'][] = 'user';
-      }
-
-      $container->setParameter('renderer.config', $renderer_config);
-    }
   }
 
 }
-- 
GitLab