如何使 Drupal Commerce 配置实体可修改

Posted

技术标签:

【中文标题】如何使 Drupal Commerce 配置实体可修改【英文标题】:How to make a Drupal Commerce configuration entity revisionable 【发布时间】:2019-12-16 05:43:22 【问题描述】:

我在前端有一个使用 Drupal 的 JSONAPI 的 Ember 应用程序。

Drupal 安装了商务模块。

ember 应用程序正在请求所有 product_types,并且需要显示有关产品类型的信息。

产品类型上有描述变量类型和标签等字段,但作为匿名用户,我看不到所有这些属性,只有标签。

这似乎是商务模块检查权限的方式存在问题。

if (!$access->isAllowed()) 
      // If this is the default revision or the entity is not revisionable, then
      // check access to the entity label. Revision support is all or nothing.
      if (!$entity->getEntityType()->isRevisionable() || $entity->isDefaultRevision()) 
        $label_access = $entity->access('view label', NULL, TRUE);
        $entity->addCacheableDependency($label_access);
        if ($label_access->isAllowed()) 
          return LabelOnlyResourceObject::createFromEntity($resource_type, $entity);

在野外——https://github.com/Free5Dev/drupalMagellium/blob/f5b0344a528a1df788c94e7558a6826dc9a2f736/core/modules/jsonapi/src/Access/EntityAccessChecker.php#L181

这里 jsonapi 决定渲染实体的有限版本。

看起来这个实体需要被修改才能通过上述检查并被完全渲染。

https://github.com/drupalcommerce/commerce/blob/8.x-2.x/modules/product/src/Entity/ProductType.php

如何使 ProductType 实体可修改?

我找到了这个https://www.drupal.org/docs/8/api/entity-api/making-an-entity-revisionable,但它的解释似乎有限。

【问题讨论】:

这是我感兴趣的特定记录的链接。请注意,只有“标签”属性可以作为匿名用户查看。 ihmm-drupal.reginault.com/jsonapi/commerce_product_type/… 【参考方案1】:

Drupal 的JSON:API module 没有自带授权逻辑。它尊重并使用 Drupal 针对该数据采取的所有安全措施。您可以在 Security considerations chapter of the module docs 中找到有关该项目的更多详细信息。

Drupal Commerce 也不提供它自己的访问管理。至少这是我从their docs 得到的。

您应该检查您的字段权限。也许它们是使用Field Permissions module 定制的?您可能希望按照 JSON:API 模块文档中的建议 Audit Entity Access and Field Access。

【讨论】:

这似乎不是正确的解决方案,因为 content_type 是配置实体而不是内容实体。

以上是关于如何使 Drupal Commerce 配置实体可修改的主要内容,如果未能解决你的问题,请参考以下文章

如何从Drupal Commerce中的国家/地区代码获取国家/地区名称

Drupal Commerce:如何创建付款方式?

xml 在PHPStorm中运行Drupal Commerce测试的配置。添加到$ PROJECT / .idea / runConfigurations。化合物“商业测试跑步者”将l

Drupal Commerce 以模态显示结帐

Drupal Commerce Kickstart2 中的其他字段

将drupal commerce产品添加到购物车,无需以编程方式重新加载页面