У меня проблема с реализацией ZfcRbac. На данный момент Rbac работает, и я ввожу страницу по определенному URL-адресу, я получаю 403. Код, который я использовал для этого, следующий:
'zfc_rbac' => array(
'guards' => array(
'ZfcRbac\Guard\RouteGuard' => array(
'relation*' => array('relation'),
),
),
'role_provider' => array(
'ZfcRbac\Role\InMemoryRoleProvider' => array(
'relation' => array(
'permissions' => array('view', 'edit', 'delete'),
),
),
),
),
Проблема возникает, когда я пытаюсь поговорить с помощником Zend Navigation. По какой-то странной причине навигация продолжает говорить мне, что может получить доступ к странице. Когда я нажимаю на нее, кажется, что вы не можете. Вот код для проверки
public function onBootstrap(MvcEvent $e)
{
$application = $e->getApplication();
$serviceManager = $application->getServiceManager();
$sharedEvents = $application->getEventManager()->getSharedManager();
$authorization = $serviceManager->get('ZfcRbac\Service\AuthorizationService');
$sharedEvents->attach(
'Zend\View\Helper\Navigation\AbstractHelper', 'isAllowed', function (EventInterface $e) use ($authorization)
{
$page = $e->getParam('page');
$permission = $page->getPermission();
return $authorization->isGranted($permission);
}
);
}
И помощник представления будет вызываться так:
<?=$this->navigation('navigation')->menu()->setPartial(array('sidebar.phtml', 'css'=>'nav navbar-nav'))->render();?>
Надеюсь, кто-то знает ответ на этот вопрос.
Заранее спасибо.