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