gabesullice/attribute_access_policies

此包的最新版本(dev-master)没有可用的许可证信息。

为任何实体提供基于属性的访问策略

安装: 9

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 1

分支: 0

开放问题: 0

类型:drupal-module

dev-master 2017-06-21 15:49 UTC

This package is not auto-updated.

Last update: 2024-09-15 04:26:06 UTC


README

基于属性的访问策略是实体访问策略模块(Entity Access Policies)定义的政策插件的特殊实现。

属性策略用YAML编写。

概述

在英文中,属性策略看起来是这样的:"如果用户具有某个字段的特定值,并且实体具有某个特定值,则用户应该能够对实体执行X、Y或Z操作。"

在YAML中,它们看起来是这样的

id: 'first_letter_policy' # Arbitrary, unique name.
entity_types: ['taxonomy_term'] # Can be a list of any entity types.
operations: ['view', 'delete'] # Can be a list of one or many of: 'view', 'update', 'delete'
entity_condition: # The condition to evaluate for the entity
  members:
  - type: condition
    property: 'name.0.value' # The field path. These can traverse entity references!
    operator: 'STARTS_WITH' # See available operators below.
    comparison: 'a'
user_condition: # The condition to evaluate for the user
  members:
  - type: condition
    property: 'name.0.value'
    operator: 'STARTS_WITH'
    comparison: 'B'

上述策略将允许任何以字符B开头的用户查看或删除以字符a开头的任何分类术语。

让我们变得复杂一些

你可以将你的条件变得非常复杂。可以在member键下放置两种类型的条件。它们是:conditioncondition_group

condition_group

  • conjunction
    • 允许的值是ANDOR。默认值是AND
  • members
    • 允许的值是更多嵌套的conditioncondition_group。默认值是一个空列表。

condition_group

  • property
    • 要评估的实体的值。你可以将其视为属性选择器。你可以通过链接字段来获取深层嵌套的值。你可以在下面了解更多关于路径语法的详情。
  • operator
    • 允许的值包括:= <> < <= > >= CONTAINS IN NOT IN STARTS_WITH ENDS_WITH BETWEEN NOT BETWEEN。默认值是=
  • comparison
    • 这是你想要与之比较的值。例如:10'foo'

属性路径

属性路径可以遵循字段名和这些路径的属性。它们可以从多值字段收集值,甚至可以遍历实体引用。

语法很简单,只需将字段名、属性名和索引点用点.连接起来。

示例:uid.0.name.value

请记住,Drupal中的所有字段实际上都是多值字段。因此,如果你省略了索引,你将得到一个列表的值,而不是单个值。相应地选择你的操作符。你不能将单个值与列表进行比较。这不会5 = [1, 1, 2, 3, 5]。然而,这会5 IN [1, 1, 2, 3, 5]工作。