Funções de administração de role_type coluna da tabela
Pergunta
No admin_role
tabela há uma coluna role_type
o que pode ter 2 valores:
- 'G' -
Mage_Admin_Model_Acl::ROLE_TYPE_GROUP
- 'U'
Mage_Admin_Model_Acl::ROLE_TYPE_USER
Por seus nomes, eu pulo para fazer a conclusão de que um é para funções de usuário, e o outro é para o grupo de funções, mas eu não consigo entender como são esses valores utilizados.
AFAIK cada usuário admin, a fim de ter acesso a algumas áreas de administração deve ter um papel.É que a função 'grupo'?Se sim, então qual é o uso do U
o valor.Se não, qual é "o grupo", então?
Magento versão não é importante.Ele foi lá desde o "big bang" (v0.7) e é mesmo portado na próxima universo (Magento 2).
Solução
Sim, o que é "o grupo".Cada usuário tem uma Função de Usuário que tem um pai de um Grupo de Função, todos os usuários são atribuídos a um grupo através do parent_id na tabela.
Só o real valor que eu posso ver é na acl geração onde eles podem despejar em toda a tabela e gerar a estrutura acl com base nas informações fornecidas, em 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;
}
Parece que eles poderiam ter usado ($função['parent_id'] > 0) para determinar se se trata de um grupo ou de função de usuário, mas eu acho que é bastante propenso a erros.
Outras dicas
Em resumo:O que você chama de "função" é o grupo (como "Administradores").
Cada grupo tem uma entrada com o tipo de G
e cada usuário tem uma entrada com o tipo de U
que se refere ao grupo de usuário, através de parent_id
.Todas as regras de acesso são definidas ao nível do grupo.Se você olhar para a tabela admin_rules
, você vai ver que todas as entradas tenham G
como tipo de função.
O admin_rule.role_type
recurso parece ser algo como o stock_id
, de alguma forma, se pretende, nunca totalmente implementado e, em seguida, realizadas ao longo porque ninguém se atreve a tocá-lo.
Por curiosidade, tentei introduzir um conjunto de dados com o tipo de função U
manualmente, mas o papel dos pais sempre prevalece, não importa se ele é um allow
ou deny
regra.E sem uma função de pai, não terá acesso ao painel de administrador em todos os.