Loading core/modules/jsonapi/jsonapi.services.yml +1 −1 Original line number Diff line number Diff line Loading @@ -90,7 +90,7 @@ services: - { name: route_enhancer } jsonapi.field_resolver: class: Drupal\jsonapi\Context\FieldResolver arguments: ['@entity_type.manager', '@entity_field.manager', '@entity_type.bundle.info', '@jsonapi.resource_type.repository', '@module_handler'] arguments: ['@entity_type.manager', '@entity_field.manager', '@entity_type.bundle.info', '@jsonapi.resource_type.repository', '@module_handler', '@current_user'] jsonapi.include_resolver: class: Drupal\jsonapi\IncludeResolver arguments: Loading core/modules/jsonapi/src/Context/FieldResolver.php +18 −2 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ use Drupal\jsonapi\ResourceType\ResourceTypeRelationship; use Drupal\jsonapi\ResourceType\ResourceTypeRepositoryInterface; use Drupal\Core\Http\Exception\CacheableBadRequestHttpException; use Drupal\Core\Session\AccountInterface; /** * A service that evaluates external path expressions against Drupal fields. Loading Loading @@ -107,6 +108,13 @@ class FieldResolver { */ protected $moduleHandler; /** * The current user account. * * @var \Drupal\Core\Session\AccountInterface */ protected $currentUser; /** * Creates a FieldResolver instance. * Loading @@ -120,8 +128,16 @@ class FieldResolver { * The resource type repository. * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler * The module handler. * @param \Drupal\Core\Session\AccountInterface|null $current_user * The current user account. */ public function __construct(EntityTypeManagerInterface $entity_type_manager, EntityFieldManagerInterface $field_manager, EntityTypeBundleInfoInterface $entity_type_bundle_info, ResourceTypeRepositoryInterface $resource_type_repository, ModuleHandlerInterface $module_handler) { public function __construct(EntityTypeManagerInterface $entity_type_manager, EntityFieldManagerInterface $field_manager, EntityTypeBundleInfoInterface $entity_type_bundle_info, ResourceTypeRepositoryInterface $resource_type_repository, ModuleHandlerInterface $module_handler, AccountInterface $current_user = NULL) { if (is_null($current_user)) { @trigger_error('Calling ' . __METHOD__ . '() without the $current_user argument is deprecated in drupal:9.3.0 and will be required in drupal:10.0.0.', E_USER_DEPRECATED); $current_user = \Drupal::currentUser(); } $this->currentUser = $current_user; $this->entityTypeManager = $entity_type_manager; $this->fieldManager = $field_manager; $this->entityTypeBundleInfo = $entity_type_bundle_info; Loading Loading @@ -743,7 +759,7 @@ protected function getFieldAccess(ResourceType $resource_type, $internal_field_n $definitions = $this->fieldManager->getFieldDefinitions($resource_type->getEntityTypeId(), $resource_type->getBundle()); assert(isset($definitions[$internal_field_name]), 'The field name should have already been validated.'); $field_definition = $definitions[$internal_field_name]; $filter_access_results = $this->moduleHandler->invokeAll('jsonapi_entity_field_filter_access', [$field_definition, \Drupal::currentUser()]); $filter_access_results = $this->moduleHandler->invokeAll('jsonapi_entity_field_filter_access', [$field_definition, $this->currentUser]); $filter_access_result = array_reduce($filter_access_results, function (AccessResultInterface $combined_result, AccessResultInterface $result) { return $combined_result->orIf($result); }, AccessResult::neutral()); Loading Loading
core/modules/jsonapi/jsonapi.services.yml +1 −1 Original line number Diff line number Diff line Loading @@ -90,7 +90,7 @@ services: - { name: route_enhancer } jsonapi.field_resolver: class: Drupal\jsonapi\Context\FieldResolver arguments: ['@entity_type.manager', '@entity_field.manager', '@entity_type.bundle.info', '@jsonapi.resource_type.repository', '@module_handler'] arguments: ['@entity_type.manager', '@entity_field.manager', '@entity_type.bundle.info', '@jsonapi.resource_type.repository', '@module_handler', '@current_user'] jsonapi.include_resolver: class: Drupal\jsonapi\IncludeResolver arguments: Loading
core/modules/jsonapi/src/Context/FieldResolver.php +18 −2 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ use Drupal\jsonapi\ResourceType\ResourceTypeRelationship; use Drupal\jsonapi\ResourceType\ResourceTypeRepositoryInterface; use Drupal\Core\Http\Exception\CacheableBadRequestHttpException; use Drupal\Core\Session\AccountInterface; /** * A service that evaluates external path expressions against Drupal fields. Loading Loading @@ -107,6 +108,13 @@ class FieldResolver { */ protected $moduleHandler; /** * The current user account. * * @var \Drupal\Core\Session\AccountInterface */ protected $currentUser; /** * Creates a FieldResolver instance. * Loading @@ -120,8 +128,16 @@ class FieldResolver { * The resource type repository. * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler * The module handler. * @param \Drupal\Core\Session\AccountInterface|null $current_user * The current user account. */ public function __construct(EntityTypeManagerInterface $entity_type_manager, EntityFieldManagerInterface $field_manager, EntityTypeBundleInfoInterface $entity_type_bundle_info, ResourceTypeRepositoryInterface $resource_type_repository, ModuleHandlerInterface $module_handler) { public function __construct(EntityTypeManagerInterface $entity_type_manager, EntityFieldManagerInterface $field_manager, EntityTypeBundleInfoInterface $entity_type_bundle_info, ResourceTypeRepositoryInterface $resource_type_repository, ModuleHandlerInterface $module_handler, AccountInterface $current_user = NULL) { if (is_null($current_user)) { @trigger_error('Calling ' . __METHOD__ . '() without the $current_user argument is deprecated in drupal:9.3.0 and will be required in drupal:10.0.0.', E_USER_DEPRECATED); $current_user = \Drupal::currentUser(); } $this->currentUser = $current_user; $this->entityTypeManager = $entity_type_manager; $this->fieldManager = $field_manager; $this->entityTypeBundleInfo = $entity_type_bundle_info; Loading Loading @@ -743,7 +759,7 @@ protected function getFieldAccess(ResourceType $resource_type, $internal_field_n $definitions = $this->fieldManager->getFieldDefinitions($resource_type->getEntityTypeId(), $resource_type->getBundle()); assert(isset($definitions[$internal_field_name]), 'The field name should have already been validated.'); $field_definition = $definitions[$internal_field_name]; $filter_access_results = $this->moduleHandler->invokeAll('jsonapi_entity_field_filter_access', [$field_definition, \Drupal::currentUser()]); $filter_access_results = $this->moduleHandler->invokeAll('jsonapi_entity_field_filter_access', [$field_definition, $this->currentUser]); $filter_access_result = array_reduce($filter_access_results, function (AccessResultInterface $combined_result, AccessResultInterface $result) { return $combined_result->orIf($result); }, AccessResult::neutral()); Loading