#zend-framework2 #zend-acl
#zend-framework2 #zend-acl
Вопрос:
Я настроил свои роли, ресурсы и разрешения в моем bootstrap, а в моем макете настроил меню навигации на основе этого, и это работает.
Что я пытаюсь сделать сейчас, так это создать панель администратора со ссылками редактирования / удаления, ЕСЛИ у текущего зарегистрированного пользователя есть эти разрешения. например, у меня может быть несколько ролей, которые могут просматривать список страниц cms, но только определенные роли могут редактировать страницу cms, и только определенные роли могут удалять страницу cms.
На данный момент я просто проверяю, вошел ли пользователь в систему:
<?php if($user = $this->identity()): ?>
<?php if($user['role'] == 'admin'):?>
<a href="/delete-url">Delete</a>
<?php endif;?>
<?php endif;?>
Как мне проверить разрешения текущей роли пользователя для указанного ресурса из представления на наличие произвольной ссылки (как указано выше)?
Ответ №1:
В макет встроен помощник просмотра ACL, поэтому, чтобы проверить, имеет ли роль доступ к ресурсу, мы можем вызвать $this->layout()->acl->isAllowed
.
В этом фрагменте кода мы проверяем, авторизован ли пользователь ( $this->identity()
возвращает false
, если не авторизован, или массив сведений, если зарегистрирован), а затем, имеет ли пользователь разрешение «удалить» ресурс:
<?php if($user = $this->identity()); //is logged in? ?>
<?php if($this->layout()->acl->isAllowed($user['role'], $resource, 'delete')):?>
<a href="/delete-url">Delete</a>
<?php endif;?>
<?php endif;?>
isAllowed
подпись является isAllowed($role = null, $resource = null, $privilege = null)