Zend Framework ACL Роли и модули - PullRequest
3 голосов
/ 31 января 2012

Я схожу с ума, пытаясь различить контроллер индекса и действие индекса в моем модуле администратора и контроллер индекса и действие индекса в моем модуле по умолчанию с помощью ACL.

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

Любые предложения будут с благодарностью.Спасибо

1 Ответ

5 голосов
/ 01 февраля 2012

Определите ваши ресурсы как module-controller и привилегии как action, тогда вы можете получить что-то вроде этого

...

// Default module, index controller
$this->addResource(new Zend_Acl_Resource('default-index')); 
// Admin module, index controller
$this->addResource(new Zend_Acl_Resource('admin-index'));

// Allow user to access default module, index controller, index and about actions
$this->allow('user', 'default-index', array('index', 'about'));
// Allow admin to access admin module, index controller, all actions
$this->allow('admin', 'admin-index');

...

[EDIT] И в вашем контроллере плагин предиспетчет

    ...

    $module = $request->getModuleName();
    $controller = $request->getControllerName();
    $action = $request->getActionName();
    $resource = "{$module}-{$controller}";
    if ($acl->has($resource)) {
        if (!$acl->isAllowed($role, $resource, $action)) {
        }
    }
    ...
...