public function dispatch(MvcEvent $e) { // @todo this logic should somehow be shared with Zend\Mvc\Application $routeMatch = $e->getRouteMatch(); $controller = $routeMatch->getParam('controller', 'not-found'); $action = $routeMatch->getParam('action', null); if (!$controller) { // Can't check against null return; } $controllerResource = $this->dispatchableResourceMapper->getDispatchableResource($controller); if (!$this->aclService->isAllowed($controllerResource, $action)) { throw new UnauthorizedException($this->aclService->getRole()->getRoleId() . ' is not allowed to access dispatchable ' . $controller . ' (' . $controllerResource . ')'); } }
public function getServiceConfig() { $module = $this; return array('factories' => array('Zend\\Acl\\Acl' => function ($sm) { return new \Zend\Acl\Acl(); }, 'ZfcAcl\\Service\\Acl' => function ($sm) use($module) { $service = new Service\Acl($module); $service->setAclLoader(new Model\Mapper\AclLoaderConfig()); $service->setRoleProvider(new Service\Acl\GenericRoleProvider()); $service->setEventManager($sm->get('EventManager')); $service->setServiceLocator($sm); return $service; }, 'ZfcAcl\\Service\\Context' => function ($sm) { $context = new Service\Context(); $context->setAclService($sm->get('ZfcAcl\\Service\\Acl')); return $context; }, 'ZfcAcl\\Controller\\Plugin\\ZfcAcl' => function ($sm) { $plugin = Controller\Plugin\ZfcAcl; $plugin->setAclService($sm->get('ZfcAcl\\Service\\Acl')); return $plugin; }, 'ZfcAcl\\View\\Helper\\ZfcAcl' => function ($sm) { $helper = View\Helper\ZfcAcl; $helper->setAclService($sm->get('ZfcAcl\\Service\\Acl')); return $helper; }, 'ZfcAcl\\Model\\Mapper\\AclLoaderConfig' => function ($sm) { $config = new Model\Mapper\AclLoaderConfig(); $config->setConfig(array('config' => array('resources' => array(), 'roles' => array(), 'rules' => array('allow' => array(), 'deny' => array())))); return $config; }, 'ZfcAcl\\Guard\\Route' => function ($sm) { $guard = new Guard\Route(); $guard->setAclService($sm->get('ZfcAcl\\Service\\Acl')); $guard->setRouteResourceMapMapper($sm->get('ZfcAcl\\Model\\Mapper\\RouteResourceMapConfig')); return $guard; }, 'ZfcAcl\\Model\\Mapper\\RouteResourceMapConfig' => function ($sm) { $mapper = new Model\Mapper\RouteResourceMapConfig(); $mapper->setConfig(array()); return $mapper; }, 'ZfcAcl\\Guard\\Event' => function ($sm) { $guard = new Guard\Event(); $guard->setAclService($sm->get('ZfcAcl\\Service\\Acl')); $guard->setEventGuardDefMapper($sm->get('ZfcAcl\\Model\\Mapper\\EventGuardDefMapConfig')); return $guard; }, 'ZfcAcl\\Model\\Mapper\\EventGuardDefMapConfig' => function ($sm) { return new Model\Mapper\EventGuardDefMapConfig(); }, 'ZfcAcl\\Guard\\Dispatch' => function ($sm) { $mapper = $sm->get('ZfcAcl\\Model\\Mapper\\DispatchableResourceMapper'); $guard = new Guard\Dispatch($mapper); $guard->setAclService($sm->get('ZfcAcl\\Service\\Acl')); return $guard; }, 'ZfcAcl\\Model\\Mapper\\DispatchableResourceMapper' => function ($sm) { return new Model\Mapper\DispatchableResourceMapper(); })); }