RouteAccessController is unable to load the book node when

Created on 29 July 2025, about 22 hours ago

Problem/Motivation

The Cannot load the "node" entity with NULL ID. assertion is thrown in the constructor of the controller.

#0 /app/application/web/core/lib/Drupal/Core/Entity/EntityStorageBase.php(261): assert(false, 'Cannot load the...')
#1 /app/application/web/modules/contrib/book/src/Controller/RouteAccessController.php(43): Drupal\Core\Entity\EntityStorageBase->load(NULL)
#2 /app/application/web/modules/contrib/book/src/Controller/RouteAccessController.php(54): Drupal\book\Controller\RouteAccessController->__construct(Object(Drupal\book\ProxyClass\BookManager), Object(Drupal\Core\Routing\CurrentRouteMatch))
#3 /app/application/web/core/lib/Drupal/Core/DependencyInjection/ClassResolver.php(41): Drupal\book\Controller\RouteAccessController::create(Object(Drupal\Core\DependencyInjection\Container))
#4 /app/application/web/core/lib/Drupal/Core/Utility/CallableResolver.php(100): Drupal\Core\DependencyInjection\ClassResolver->getInstanceFromDefinition('\\Drupal\\book\\Co...')
#5 /app/application/web/core/lib/Drupal/Core/Access/CustomAccessCheck.php(74): Drupal\Core\Utility\CallableResolver->getCallableFromDefinition('\\Drupal\\book\\Co...')
#6 [internal function]: Drupal\Core\Access\CustomAccessCheck->access(Object(Symfony\Component\Routing\Route), Object(Drupal\Core\Routing\RouteMatch), Object(Drupal\Core\Session\AccountProxy), Object(Symfony\Component\HttpFoundation\Request))
#7 /app/application/web/core/lib/Drupal/Core/Access/AccessManager.php(160): call_user_func_array(Array, Array)
#8 /app/application/web/core/lib/Drupal/Core/Access/AccessManager.php(136): Drupal\Core\Access\AccessManager->performCheck('access_check.cu...', Object(Drupal\Component\Utility\ArgumentsResolver))
#9 /app/application/web/core/lib/Drupal/Core/Access/AccessManager.php(113): Drupal\Core\Access\AccessManager->check(Object(Drupal\Core\Routing\RouteMatch), Object(Drupal\Core\Session\AccountProxy), Object(Symfony\Component\HttpFoundation\Request), true)
#10 /app/application/web/core/lib/Drupal/Core/Routing/AccessAwareRouter.php(109): Drupal\Core\Access\AccessManager->checkRequest(Object(Symfony\Component\HttpFoundation\Request), Object(Drupal\Core\Session\AccountProxy), true)
#11 /app/application/web/core/lib/Drupal/Core/Routing/AccessAwareRouter.php(94): Drupal\Core\Routing\AccessAwareRouter->checkAccess(Object(Symfony\Component\HttpFoundation\Request))
#12 /app/application/web/core/lib/Drupal/Core/Routing/AccessAwareRouter.php(152): Drupal\Core\Routing\AccessAwareRouter->matchRequest(Object(Symfony\Component\HttpFoundation\Request))
#13 /app/application/web/core/modules/user/src/Plugin/LanguageNegotiation/LanguageNegotiationUserAdmin.php(140): Drupal\Core\Routing\AccessAwareRouter->match('/node/113/child...')
#14 /app/application/web/core/modules/user/src/Plugin/LanguageNegotiation/LanguageNegotiationUserAdmin.php(106): Drupal\user\Plugin\LanguageNegotiation\LanguageNegotiationUserAdmin->isAdminPath(Object(Symfony\Component\HttpFoundation\Request))
#15 /app/application/web/core/modules/language/src/LanguageNegotiator.php(197): Drupal\user\Plugin\LanguageNegotiation\LanguageNegotiationUserAdmin->getLangcode(Object(Symfony\Component\HttpFoundation\Request))
#16 /app/application/web/core/modules/language/src/LanguageNegotiator.php(137): Drupal\language\LanguageNegotiator->negotiateLanguage('language_interf...', 'language-user-a...')

In particular if the user has a preferred admin language code.

Steps to reproduce

1. Have a user with the access administration pages or view the administration theme permission.
2. Give them a preferred language code.
3. Attempt to access the /node/{node}/child-ordering route.

Proposed resolution

Add appropriate checks to see that the node parameter is an integer, as well as lazy load the node entity from the route match object passed into the callbacks.

Remaining tasks

Provide issue fork.

User interface changes

N/A

API changes

N/A

Data model changes

🐛 Bug report
Status

Active

Version

3.0

Component

Code

Created by

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

Production build 0.71.5 2024