thelia/customer-group-acl-module

安装: 537

依赖: 0

建议者: 0

安全: 0

星星: 0

观察者: 10

分支: 3

开放问题: 0

类型:thelia-module

0.2.3 2016-01-28 09:02 UTC

This package is auto-updated.

Last update: 2024-09-14 21:41:14 UTC


README

通过访问控制列表机制扩展CustomerGroup模块,可以用来允许或拒绝客户组访问某些资源。

安装

手动

  • 将模块复制到 <thelia_root>/local/modules/ 目录,并确保模块名称为CustomerGroupAcl。
  • 在Thelia管理面板中激活它

Composer

将其添加到您的Thelia composer.json主文件中

composer require thelia/customer-group-acl-module:~0.1

## 更新

0.1.3

  • 将acl数据表更改为添加class_name,用于检查特定对象的acl类名;
  • 分发 CheckAclEvent_[resource] ;
  • 更改checkAcl定义以checkAcl($resources, $accesses, $accessOr = false, $entityId = null, $dispatchEvent = false)
    • $entityId,对象标识,如果isset资源必须单独存在,
    • $dispatchEvent,如果设置,则分发CheckAclEvent,默认为false;

执行 setup/update-0.1.2-0.1.3.sql 脚本。

配置

使用配置文件

使用客户组ACL的模块必须在模块配置目录中的 acl.xml 文件中定义它们。当模块激活时将创建ACL。

由于ACL应用于客户组,您必须已经创建了一些,才能使用它们(请参阅CustomerGroup模块文档)。在这个例子中,我们假设 clientvipalso-vip-1also-vip-2 组已存在。

<?xml version="1.0" encoding="UTF-8" ?>
<config xmlns="http://thelia.net/acl"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://thelia.net/acl http://thelia.net/acl/acl.xsd">
      <acls>
          <acl code="vip-perks">
              <descriptive locale="en_US">
                  <title>VIP perks</title>
                  <description>Special VIP perks.</description>
              </descriptive>
              <descriptive locale="en_US">
                  <title>Avantages VIP</title>
                  <description>Avantages spéciaux VIP.</description>
              </descriptive>
          </acl>
          <customergroups>
              <customergroup group="vip">
                  <customergroupacl aclcode="vip-perks">
                      <access right="VIEW"/>
                  </customergroupacl>
              </customergroup>

              <customergroup group="extra-vip-1">
                  <extends-customergroupacl
                      group="vip"
                  />
              </customergroup>

              <customergroup group="extra-vip-2">
                  <extends-customergroupacl
                      group="vip"
                      aclcode="vip-perks"
                  />
              </customergroup>
          </customergroups>
      <acls>
</config>

在这里,我们定义一个ACL资源 vip-perks 并授予 VIEW 类型访问权限给 vip 组。将 extra-vip-1 组设置为与 vip 组具有相同的访问权限。将 extra-vip-2 组也设置为与 vip 组具有相同的权限,但仅针对 vip-perks ACL资源。

使用后台管理界面

ACL和组访问也可以在Thelia后台管理界面中进行配置。在 工具 菜单中有一个链接到配置页面。

访问类型

可用的访问类型在Thelia访问管理器中定义

  • 查看
  • 创建
  • 更新
  • 删除

此外,可以使用 ALL 访问权限授予所有可用的访问权限。

检查组访问

PHP

可以使用 customer_group_acl.tool 来检查ACL访问。

$aclTool = $container->get("customer_group_acl.tool");

// simple check
$aclTool->checkAcl("vip-perks", AccessManager::VIEW);

// resources and accesess arguments can be a single value or an array of values
$aclTool->checkAcl(
    [
        "myAcl1",
        "myAcl2",
    ],
    [
        AccessManager::VIEW,
        AccessManager::CREATE,
    ]
);

// by default, checks that at all accesses are granted
// but you can also check that only at least one access is granted
$aclTool->checkAcl(
    "myAcl",
    [
        AccessManager::VIEW,
        AccessManager::CREATE,
    ],
    true
);

Smarty

Smarty插件也提供用于在模板中检查ACL访问。

与PHP函数一样,您可以同时检查多个资源和访问权限,并且可选地只要求一个访问权限。

简单检查

如果所需的访问权限未被授予,则 check_acl 函数将抛出异常。

{check_acl code='vip-perks' access='view'}

{check_acl code='vip-perks,myAcl' access='view,create'}

{check_acl code='myAcl' access='view,create,update' access_or=true}

块检查

可以使用 aclelseacl 标签以块语法检查ACL访问。

{acl name='acl-check' code='vip-perks' access='view'}
    Here is some super secret stuff !
{/acl}

{elseacl rel='acl-check'}
   Get VIP access for more cool stuff !
{/elseacl}

循环

acl

此循环列出ACL。

输入参数

order 可以是以下之一

  • id(默认值)
  • module
  • module_reverse

输出参数

customer-group-acl

此循环列出客户组访问授权。

输入参数

输出参数