Pregunta

En el admin_role mesa hay una columna role_type que puede tener 2 valores:

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

Por sus nombres a hacer saltar a la conclusión de que uno es para las funciones de usuario, y el otro es para el grupo de funciones, pero no puedo entender cómo son estos valores utilizados.
AFAIK cada usuario administrador, con el fin de tener acceso a algunas de administración de áreas deben tener un papel.Es que el papel de "el grupo"?Si sí, entonces, ¿cuál es el uso de la U valor.Si no, ¿qué es 'el grupo', entonces?

Versión Magento no es importante.Ha estado ahí desde el "big bang" (v0.7) y es portado en el siguiente universo (Magento 2).

¿Fue útil?

Solución

Sí, el que es "el grupo".Cada usuario tiene un Rol de Usuario que tiene un padre de un Grupo de Rol, todos los usuarios son asignados a un grupo a través de la parent_id en esa tabla.

El único valor real que puedo ver es en la acl generación donde se puede volcar en toda la tabla y generar la estructura acl basada en la información proporcionada, en 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 podría haber utilizado ($papel['parent_id'] > 0) para determinar si es un grupo o rol de usuario, pero creo que es bastante propenso a error.

Otros consejos

En resumen:Lo que ustedes llaman "el papel" es el grupo (como "Administradores").

Cada grupo tiene una entrada con el tipo de G y cada usuario tiene una entrada con el tipo de U que se refiere al grupo del usuario a través de parent_id.Todas las reglas de acceso se definen en el nivel de grupo.Si usted mira la tabla de admin_rules, verá que todas las entradas tienen G como tipo de rol.

El admin_rule.role_type característica parece ser algo así como el stock_id, de alguna manera la intención, nunca plenamente y, a continuación, llevar, porque nadie se atreve a tocarlo.

Por curiosidad he intentado entrar a un conjunto de datos con tipo de rol U de forma manual, pero el papel de padre siempre tiene prioridad, no importa si es un allow o deny de la regla.Y sin un papel de padre, no podrás tener acceso al panel de administración a todos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top