diff --git a/core/modules/jsonapi/src/Controller/FileUpload.php b/core/modules/jsonapi/src/Controller/FileUpload.php index 24676257c6..359768c968 100644 --- a/core/modules/jsonapi/src/Controller/FileUpload.php +++ b/core/modules/jsonapi/src/Controller/FileUpload.php @@ -5,6 +5,7 @@ use Drupal\Core\Access\AccessResultReasonInterface; use Drupal\Core\Cache\CacheableMetadata; use Drupal\Core\Entity\EntityFieldManagerInterface; +use Drupal\Core\Entity\Exception\UnknownFieldException; use Drupal\Core\Entity\FieldableEntityInterface; use Drupal\Core\Field\FieldDefinitionInterface; use Drupal\Core\File\Exception\FileException; @@ -32,6 +33,7 @@ use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Symfony\Component\HttpKernel\Exception\HttpException; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException; use Symfony\Component\HttpKernel\HttpKernelInterface; @@ -239,7 +241,13 @@ public function handleFileUploadForNewResource(Request $request, ResourceType $r */ protected function doHandleFileUpload(Request $request, ResourceType $resource_type, string $file_field_name): FileInterface { $file_field_name = $resource_type->getInternalName($file_field_name); - $field_definition = $this->fieldResolver->resolveFieldDefinition($resource_type->getEntityTypeId(), $resource_type->getBundle(), $file_field_name); + + try { + $field_definition = $this->fieldResolver->resolveFieldDefinition($resource_type->getEntityTypeId(), $resource_type->getBundle(), $file_field_name); + } + catch (UnknownFieldException $e) { + throw new NotFoundHttpException($e->getMessage(), $e); + } $this->ensureFileUploadAccess($field_definition); diff --git a/core/modules/jsonapi/tests/src/Functional/ResourceTestBase.php b/core/modules/jsonapi/tests/src/Functional/ResourceTestBase.php index d7dae50d0c..01aae8e0dc 100644 --- a/core/modules/jsonapi/tests/src/Functional/ResourceTestBase.php +++ b/core/modules/jsonapi/tests/src/Functional/ResourceTestBase.php @@ -65,6 +65,7 @@ abstract class ResourceTestBase extends BrowserTestBase { 'rest_test', 'jsonapi_test_field_access', 'text', + 'file', ]; /** diff --git a/core/modules/jsonapi/tests/src/Kernel/Context/FieldResolverTest.php b/core/modules/jsonapi/tests/src/Kernel/Context/FieldResolverTest.php index fc274647fa..9cddbe0db0 100644 --- a/core/modules/jsonapi/tests/src/Kernel/Context/FieldResolverTest.php +++ b/core/modules/jsonapi/tests/src/Kernel/Context/FieldResolverTest.php @@ -24,6 +24,7 @@ class FieldResolverTest extends JsonapiKernelTestBase { 'field', 'text', 'user', + 'file', ]; /** diff --git a/core/modules/jsonapi/tests/src/Kernel/Controller/EntityResourceTest.php b/core/modules/jsonapi/tests/src/Kernel/Controller/EntityResourceTest.php index 859cb80599..ec56dd9f29 100644 --- a/core/modules/jsonapi/tests/src/Kernel/Controller/EntityResourceTest.php +++ b/core/modules/jsonapi/tests/src/Kernel/Controller/EntityResourceTest.php @@ -46,6 +46,7 @@ class EntityResourceTest extends JsonapiKernelTestBase { 'serialization', 'system', 'user', + 'file', ]; /** diff --git a/core/modules/jsonapi/tests/src/Kernel/EventSubscriber/ResourceObjectNormalizerCacherTest.php b/core/modules/jsonapi/tests/src/Kernel/EventSubscriber/ResourceObjectNormalizerCacherTest.php index e715edc47e..67937d79b1 100644 --- a/core/modules/jsonapi/tests/src/Kernel/EventSubscriber/ResourceObjectNormalizerCacherTest.php +++ b/core/modules/jsonapi/tests/src/Kernel/EventSubscriber/ResourceObjectNormalizerCacherTest.php @@ -27,6 +27,7 @@ class ResourceObjectNormalizerCacherTest extends KernelTestBase { 'serialization', 'jsonapi', 'user', + 'file', ]; /** diff --git a/core/modules/jsonapi/tests/src/Kernel/Normalizer/FieldItemNormalizerTest.php b/core/modules/jsonapi/tests/src/Kernel/Normalizer/FieldItemNormalizerTest.php index cb40e712b5..f290f971db 100644 --- a/core/modules/jsonapi/tests/src/Kernel/Normalizer/FieldItemNormalizerTest.php +++ b/core/modules/jsonapi/tests/src/Kernel/Normalizer/FieldItemNormalizerTest.php @@ -26,6 +26,7 @@ class FieldItemNormalizerTest extends JsonapiKernelTestBase { 'link', 'entity_test', 'serialization', + 'file', ]; /** diff --git a/core/modules/jsonapi/tests/src/Kernel/Normalizer/LinkCollectionNormalizerTest.php b/core/modules/jsonapi/tests/src/Kernel/Normalizer/LinkCollectionNormalizerTest.php index 4282b62947..8dc4cb8ebb 100644 --- a/core/modules/jsonapi/tests/src/Kernel/Normalizer/LinkCollectionNormalizerTest.php +++ b/core/modules/jsonapi/tests/src/Kernel/Normalizer/LinkCollectionNormalizerTest.php @@ -53,6 +53,7 @@ class LinkCollectionNormalizerTest extends KernelTestBase { 'serialization', 'system', 'user', + 'file', ]; /** diff --git a/core/modules/jsonapi/tests/src/Kernel/ResourceType/RelatedResourceTypesTest.php b/core/modules/jsonapi/tests/src/Kernel/ResourceType/RelatedResourceTypesTest.php index 3ee33a9c6e..f6d56d70a9 100644 --- a/core/modules/jsonapi/tests/src/Kernel/ResourceType/RelatedResourceTypesTest.php +++ b/core/modules/jsonapi/tests/src/Kernel/ResourceType/RelatedResourceTypesTest.php @@ -25,6 +25,7 @@ class RelatedResourceTypesTest extends JsonapiKernelTestBase { 'system', 'user', 'field', + 'file', ]; /** diff --git a/core/modules/jsonapi/tests/src/Kernel/ResourceType/ResourceTypeRepositoryTest.php b/core/modules/jsonapi/tests/src/Kernel/ResourceType/ResourceTypeRepositoryTest.php index 5503967191..41acfe54b9 100644 --- a/core/modules/jsonapi/tests/src/Kernel/ResourceType/ResourceTypeRepositoryTest.php +++ b/core/modules/jsonapi/tests/src/Kernel/ResourceType/ResourceTypeRepositoryTest.php @@ -25,6 +25,7 @@ class ResourceTypeRepositoryTest extends JsonapiKernelTestBase { 'system', 'user', 'jsonapi_test_resource_type_building', + 'file', ]; /** diff --git a/core/modules/jsonapi/tests/src/Kernel/Revisions/VersionNegotiatorTest.php b/core/modules/jsonapi/tests/src/Kernel/Revisions/VersionNegotiatorTest.php index ce8fabf3df..eb87fc1dfe 100644 --- a/core/modules/jsonapi/tests/src/Kernel/Revisions/VersionNegotiatorTest.php +++ b/core/modules/jsonapi/tests/src/Kernel/Revisions/VersionNegotiatorTest.php @@ -64,6 +64,7 @@ class VersionNegotiatorTest extends JsonapiKernelTestBase { 'serialization', 'system', 'user', + 'file', ]; /** diff --git a/core/modules/jsonapi/tests/src/Kernel/Serializer/SerializerTest.php b/core/modules/jsonapi/tests/src/Kernel/Serializer/SerializerTest.php index b55b25b98f..54cbc83fd9 100644 --- a/core/modules/jsonapi/tests/src/Kernel/Serializer/SerializerTest.php +++ b/core/modules/jsonapi/tests/src/Kernel/Serializer/SerializerTest.php @@ -33,6 +33,7 @@ class SerializerTest extends JsonapiKernelTestBase { 'text', 'filter', 'jsonapi_test_data_type', + 'file', ]; /**