在里面 admin_role 表有一列 role_type 可以有 2 个值:

  • 'G' - Mage_Admin_Model_Acl::ROLE_TYPE_GROUP
  • “U”- Mage_Admin_Model_Acl::ROLE_TYPE_USER

通过他们的名字,我跳出这样的结论:一个用于用户角色,另一个用于组角色,但我无法理解这些值是如何使用的。
据我所知,每个管理员用户为了能够访问某些管理区域,必须拥有一个角色。这个角色是“团体”吗?如果是的话,那这个有什么用 U 价值。如果不是,那么“团体”是什么?

Magento 版本并不重要。它自“大爆炸”(v0.7)以来就一直存在,甚至被移植到下一个宇宙(Magento 2)中。

有帮助吗?

解决方案

是的,这是'集团'。每个用户具有用户角色,该用户角色具有组角色的父级,所有用户都通过该表中的parent_id分配给组。

我可以看到的唯一实际值在ACL生成中,它们可以转储整个表中并根据所提供的信息生成ACL结构,在MAGE_ADMIN_MODEL_RESOURCE_ACL :: loadRoles

public function loadRoles(Mage_Admin_Model_Acl $acl, array $rolesArr)
{
    foreach ($rolesArr as $role) {
        $parent = ($role['parent_id'] > 0) ? Mage_Admin_Model_Acl::ROLE_TYPE_GROUP . $role['parent_id'] : null;
        switch ($role['role_type']) {
            case Mage_Admin_Model_Acl::ROLE_TYPE_GROUP:
                $roleId = $role['role_type'] . $role['role_id'];
                $acl->addRole(Mage::getModel('admin/acl_role_group', $roleId), $parent);
                break;

            case Mage_Admin_Model_Acl::ROLE_TYPE_USER:
                $roleId = $role['role_type'] . $role['user_id'];
                if (!$acl->hasRole($roleId)) {
                    $acl->addRole(Mage::getModel('admin/acl_role_user', $roleId), $parent);
                } else {
                    $acl->addRoleParent($roleId, $parent);
                }
                break;
        }
    }

    return $this;
}
.

看起来他们可以使用($角色['parent_id']> 0)来确定它是一个组还是用户角色,但我猜这非常出错。

其他提示

简而言之:您所说的“角色”是组(如“管理员”)。

每个组都有一个类型为的条目 G 每个用户都有一个类型为的条目 U 这是通过以下方式引用用户组 parent_id. 。所有访问规则均在组级别定义。如果你看一下表格 admin_rules, ,你会看到所有条目都有 G 作为角色类型。

admin_rule.role_type 功能似乎是这样的 stock_id, ,不知何故有意,从未完全实施,然后继续进行,因为没有人敢碰它。

出于好奇,我尝试输入具有角色类型的数据集 U 手动,但父角色始终优先,无论它是否是 allow 或者 deny 规则。如果没有父角色,您根本无法访问管理面板。

许可以下: CC-BY-SA归因
scroll top