管理ロールrole_typeテーブル列
質問
admin_role
テーブルの場合、2つの値を持つことができる列role_type
があります。
- 'g' -
Mage_Admin_Model_Acl::ROLE_TYPE_GROUP
- 'u' -
Mage_Admin_Model_Acl::ROLE_TYPE_USER
名前で私はジャンプがユーザーの役割のためのものであり、もう1つはグループの役割のための結論を実行しますが、これらの値はどのように使用されていますか。
一部の管理領域にアクセスできるようにするには、各管理者ユーザーが役割を持つ必要があります。その役割は「グループ」ですか?もしそうなら、U
値の使用は何ですか。そうでなければ、「グループ」は何ですか?マゼント版は重要ではありません。「ビッグバン」(v0.7)以来そこにいて、それは次の宇宙(Magento 2)に移植されています。
解決
はい、それは「グループ」です。各ユーザーには、グループロールの親があるユーザーロールがあり、すべてのユーザーがそのテーブル内のparent_idを介してグループに割り当てられています。
私が見ることができる唯一の実際の値は、テーブル全体にダンプでき、提供された情報に基づいてACL構造を生成するACL世代にあります。
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;
}
.
それは、それがグループまたはユーザーの役割であるかどうかを判断することができるが、それが非常にエラーが発生しやすいと思いますが、それが非常に誤っていると思います。
他のヒント
short:「役割」と呼ぶものはグループです(「管理者」のような)。
各グループには、G
型の入力があり、各ユーザーはU
を介してユーザーのグループを参照するタイプparent_id
のエントリを持ちます。すべてのアクセスルールはグループレベルで定義されています。テーブルadmin_rules
を見ると、すべてのエントリに役割の種類としてG
があることがわかります。
admin_rule.role_type
機能は、stock_id
のようなものです。どういうわけか、まさに意図された、決して完全に実装され、次にそれから運ばれていないので、誰もそれに触れることができません。
好奇心の抜け違いは、ロール型U
を手動で入力しようとしましたが、allow
またはdeny
ルールであれば、親ロールは常に優先されます。また、親の役割なしで、Admin Panelにまったくアクセスできません。