как получить уровень доступа администратора в magento?


Есть ли способ узнать access level текущего вошедшего в систему пользователя, чтобы узнать, предоставлена ли пользователю роль доступа "all" или "customized"?

Я могу получить данные о роли пользователя, но, похоже, не могу понять/найти access level, чтобы применить некоторую логику к своему коду (collection).

Mage::getSingleton('admin/session')->getUser()->getRole()->getData(); приведенное выше утверждение печатает:

Array
(
    [role_id] => 34
    [parent_id] => 0
    [tree_level] => 1
    [sort_order] => 0
    [role_type] => G
    [user_id] => 0
    [role_name] => Demo
    [gws_is_all] => 1
    [gws_websites] => 
    [gws_store_groups] => 
)

Как я могу получить здесь информацию о access level (all, customized) назначенной роли пользователю?

Весьма признателен.

Ps: я опубликовал тот же вопрос о стековом потоке, но, похоже, это конкретное место для magento.

Author: Gopal Patel, 2015-05-06

2 answers

Вы можете получить все сведения о доступе с помощью кода ниже

$roleId= Mage::getSingleton('admin/session')->getUser()->getRole()->getData('role_id');
if(!empty($roleId)){
    print_r(Mage::getModel('admin/rules')->getCollection()->addFieldToFilter('role_id',$roleId)->getData());
}
 2
Author: Keyur Shah, 2015-05-06 06:03:22

Нет прямого доступа к ресурсам через API базовой модели. Вместо этого модель ролей содержит метод getResourcesTree, который позволит вам программно получить доступ к списку ресурсов с помощью кода примерно такого

$resources = Mage::getModel('admin/roles')->getResourcesTree();
$nodes = $resources->xpath('//*[@aclpath]');            
echo '<dl>';
foreach($nodes as $node)
{
    echo '<dt>' . (string)$node->title . '</dt>';
    echo '<dd>' . $node->getAttribute('aclpath') . '</dd>';
}
echo '</dl>'; 

Роли моделируются простым классом моделей, отличных от EAV

Mage_Admin_Model_Roles
Mage::getModel('admin/roles')

Для получения роли пользователя по идентификатору попробуйте выполнить следующее

$username = 'admin';
$role_data = Mage::getModel('admin/user')->getCollection()->addFieldToFilter('username',$username)->getFirstItem()->getRole()->getData();
var_dump($role_data);
 1
Author: Sohaib Jamil, 2015-05-06 06:09:52