管理员角色 role_type 表列
题
在里面 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
规则。如果没有父角色,您根本无法访问管理面板。