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).

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top