PHPackages                             zfstarter/zfs-rbac - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. zfstarter/zfs-rbac

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

zfstarter/zfs-rbac
==================

1.1(11y ago)0712MITPHPPHP &gt;=5.3.23

Since Jul 2Pushed 11y agoCompare

[ Source](https://github.com/ZFStarter/ZFSRbac)[ Packagist](https://packagist.org/packages/zfstarter/zfs-rbac)[ RSS](/packages/zfstarter-zfs-rbac/feed)WikiDiscussions master Synced yesterday

READMEChangelog (1)Dependencies (5)Versions (3)Used By (0)

zfs-rbac
========

[](#zfs-rbac)

Обертка на Zf2\\Rbac для удобного использования в ZF2/ZFStarter проектах

Подключение
-----------

[](#подключение)

Сервис оформлен в модуль, и потому вам остается лишь добавить его имя в список модулей на подключение в `application.config.php`:

```
'modules' => array(
        'ZFS\Rbac', // getEventManager()->getSharedManager()->attach(
    ZFS\Rbac\Rbac::EVENT_MANAGER_IDENTIFIER,
    ZFS\Rbac\Rbac::EVENT_GET_CONFIG,
    function () {
        return array(
            'user' => array(
                'permissions' => array(
                    'login'
                )
            ),
            'users_manager' => array(
                'permissions' => array(
                    'modify_users'
                )
            ),
            'admin' => array(
                'children' => array(
                    'users_manager'
                )
            )
        );
    }
);
```

Обработчик должен вернуть массив из ролей (ключ) и его настройкой (значение). Среди настроек могут быть массив из самих разрешений (ключ permissions) и массив из дочерних ролей (ключ children).

EVENT\_GET\_USER\_ROLES ожидает список ролей текущего пользователя. Предоставить его можно подписавшись на событие:

```
$this->getEventManager()->getSharedManager()->attach(
    ZFS\Rbac\Rbac::EVENT_MANAGER_IDENTIFIER,
    ZFS\Rbac\Rbac::EVENT_GET_USER_ROLES,
    function () {
        return array('admin');
    }
);
```

Оба события могут обрабатывать несколько обработчиков дополняя массивы предыдущих. Таким образом, каждый модуль может модифицировать конфигурацию удобным для него способом: выбирая данные из БД, из конфигурации проекта или отдельно лежащего файла с настройками.

Примеры использования:
----------------------

[](#примеры-использования)

- в контроллере:

```
class IndexController extends AbstractActionController
{
    public function indexAction()
    {
        if (!$this->isGranted('index_action')) {
            return $this->notFoundAction();
        }
        /* ... */
    }
}
```

- в шаблоне представления:

```
