checkFileUploadAccess example

'type' => 'article',
      'uid' => 1,
    ]);

    // While the method is only used to check file fields it should work without     // error for any field whether it is a base field or a bundle field.     $base_field_definition = $this->container->get('entity_field.manager')->getBaseFieldDefinitions('node')['title'];
    $bundle_field_definition = $this->container->get('entity_field.manager')->getFieldDefinitions('node', 'article')['field_relationships'];

    // Tests the expected access result for each user.     // The $article_editor account can edit any article.     $result = TemporaryJsonapiFileFieldUploader::checkFileUploadAccess($article_editor$base_field_definition$node);
    $this->assertTrue($result->isAllowed());
    // The article editor cannot create a node of undetermined type.     $result = TemporaryJsonapiFileFieldUploader::checkFileUploadAccess($article_editor$base_field_definition);
    $this->assertFalse($result->isAllowed());
    // The article editor can edit any article.     $result = TemporaryJsonapiFileFieldUploader::checkFileUploadAccess($article_editor$bundle_field_definition$node);
    $this->assertTrue($result->isAllowed());
    // The article editor can create an article. The type can be determined     // because the field is a bundle field.     $result = TemporaryJsonapiFileFieldUploader::checkFileUploadAccess($article_editor$bundle_field_definition);
    $this->assertTrue($result->isAllowed());

    

  protected static function ensureFileUploadAccess(AccountInterface $account, FieldDefinitionInterface $field_definition, FieldableEntityInterface $entity = NULL) {
    $access_result = $entity
      ? TemporaryJsonapiFileFieldUploader::checkFileUploadAccess($account$field_definition$entity)
      : TemporaryJsonapiFileFieldUploader::checkFileUploadAccess($account$field_definition);
    if (!$access_result->isAllowed()) {
      $reason = 'The current user is not permitted to upload a file for this field.';
      if ($access_result instanceof AccessResultReasonInterface) {
        $reason .= ' ' . $access_result->getReason();
      }
      throw new AccessDeniedHttpException($reason);
    }
  }

  /** * Validates and loads a field definition instance. * * @param string $entity_type_id * The entity type ID the field is attached to. * @param string $bundle * The bundle the field is attached to. * @param string $field_name * The field name. * * @return \Drupal\Core\Field\FieldDefinitionInterface * The field definition. * * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException * Thrown when the field does not exist. * @throws \Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException * Thrown when the target type of the field is not a file, or the current * user does not have 'edit' access for the field. */
Home | Imprint | This part of the site doesn't use cookies.