как получить уровень доступа администратора в 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.
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());
}
Нет прямого доступа к ресурсам через 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);