PHPackages                             carono/yii2-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. carono/yii2-rbac

ActiveYii2-extension[Authentication &amp; Authorization](/categories/authentication)

carono/yii2-rbac
================

Yii2 RBAC extension

1.2.1(5mo ago)32.2k12MITPHPPHP ^7.4 || 8.\*

Since Dec 3Pushed 5mo ago3 watchersCompare

[ Source](https://github.com/carono/yii2-rbac)[ Packagist](https://packagist.org/packages/carono/yii2-rbac)[ RSS](/packages/carono-yii2-rbac/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (1)Versions (30)Used By (2)

yii2-rbac
=========

[](#yii2-rbac)

Очередная реализация RBAC для yii2.

ВВЕДЕНИЕ
--------

[](#введение)

Этот компонент помогает распределить доступы по конкретным action в контроллерах по ролям, в конфигах прописываются доступы, выполняется команда для сброса прав, и база наполнена всеми указанными ролями, контроллерами и акшенами. Можно не прописывать каждый action в конкретном контроллере, а указать '\*' и команда соберёт все возможные.

УСТАНОВКА
---------

[](#установка)

`composer require carono/yii2-rbac`

Не забудьте провести миграцию для таблиц

`yii migrate --migrationPath=@yii/rbac/migrations`

НАСТРОЙКА
---------

[](#настройка)

В `config/console.php` для basic редакции и в `console/main.php` для advanced, прописываем

```
'components' => [
       'authManager' => [
            // Настраиваем менеджер, чтобы можно было в консоли работать с правами
            'class'        => 'yii\rbac\DbManager',
            'defaultRoles' => ['guest', 'user'],
        ],
],
'controllerMap' => [
        'rbac' => [
            'class'       => 'carono\yii2rbac\RbacController',
            'roles'       => [
                'guest'    => null,
                'user'     => null,
                'manager'  => 'user',
                'director' => ['parent' => 'manager', 'description' => 'Директор'], // Наследование директора от менеджера
                'root'     => null
            ],
            'permissions' => [
                '*:*:*'                => ['root'], // Для рута доступны все контроллеры
                'Basic:Site:*'         => ['guest'], // Для гостя разрешены все actions у SiteController
                'Basic:Director:*'     => ['director'],
                'updater_perm'         => ['director'], // Простые доступы тоже можно создавать как обычно
                'Basic:Manager:*'      => ['manager'], // Будет доступно и директору, т.к. наследуется
                'Basic:Director:Index' => ['manager'], // Только один action у DirectorController
                'Ajax:*:*'             => ['user'] // Модуль Ajax, все контроллеры разрешаем авторизованным
            ]
        ],
    ]

```

После настройки, необходимо выполнить `yii rbac` чтобы создались роли и создались доступы по контроллерам. Если настройки в конфиге изменились, то необходимо каждый раз вызывать команду. Все роли и доступы пересоздаются заново. При этом, уже навешанные на пользователей роли не удаляются.

В базе создаются доступы вида `Module:Controller:Action`, если в настройках указывается '\*' в любой части, то собираются все модули, контроллеры или акшены.

ОСОБЕННОСТИ
-----------

[](#особенности)

Все контроллеры без модулей, всё же имеют модуль, которым является Yii::$app, поэтому SiteController-&gt;actionIndex формирует доступ как `Basic:Site:Index`, если в конфиге (web.php) изменить id вашего приложения с basic на my-app, то нужно и в настройках контроллера указывать соответственно: `MyApp:Site:Index`

КАК ПРИМЕНЯТЬ
-------------

[](#как-применять)

В behaviors контроллера, можно использовать фильтр, который идет в комплекте

```
  public function behaviors()
    {
        return [
            'access' => [
                'class' => RoleManagerFilter::className(),
            ]
        ];
    }

```

или проверить самостоятельно

```
public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
                    [
                        'allow'         => true,
                        'matchCallback' => function ($rule, $action) {
                            return RoleManager::checkAccess($action);
                        }
                    ],
                ],
            ],
        ];
    }

```

ХЕЛПЕРЫ
-------

[](#хелперы)

- RoleManager::formPermissionByAction(Yii::$app-&gt;controller-&gt;action) = Basic:Site:index
- RoleManager::checkAccessByUrl('/site/index?page=1', $user) = true, передаем ссылки или массив, как для Url::to
- RoleManager::checkAccess('Basic:Site:Index', $user), так же принимает и класс Action

$user - класс прописанный у вас в конфигах - Yii::$app-&gt;user-&gt;identityClass, так же может быть primaryKey модели или username

РАБОТА С ADVANCED РЕДАКЦИЕЙ
---------------------------

[](#работа-с-advanced-редакцией)

Не сильно отличается от basic, только доступ может состоять как из 3х так и из 4х секций, Application:Module:Controller:Action

```
'controllerMap' => [
        'rbac' => [
            'class'       => 'carono\yii2rbac\RbacController',
            'roles'       => [
                'guest'    => null,
                'user'     => null,
                'manager'  => 'user',
                'director' => ['parent' => 'manager', 'description' => 'Директор'], // Наследование директора от менеджера
                'root'     => null
            ],
            'permissions' => [
                '*:*:*'                 => ['root'], // Для рута доступны все контроллеры как во frontend так и в backend
                'AppFrontend:Site:*'    => ['guest'], // Для гостя разрешены все actions у SiteController во frontend
                'AppBackend:Director:*' => ['director'],
                'AppFrontend:Ajax:*:*'  => ['user'] // Модуль Ajax, все контроллеры разрешаем во frontend
                '*:Site:Index'          => ['guest'] // Разрешаем SiteController->index как во frontend так и backend
            ]
        ],
    ]

```

###  Health Score

49

—

FairBetter than 95% of packages

Maintenance72

Regular maintenance activity

Popularity21

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity74

Established project with proven stability

 Bus Factor1

Top contributor holds 98.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~117 days

Recently: every ~203 days

Total

29

Last Release

158d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/6193985?v=4)[Александр Касьянов](/maintainers/carono)[@carono](https://github.com/carono)

---

Top Contributors

[![carono](https://avatars.githubusercontent.com/u/6193985?v=4)](https://github.com/carono "carono (57 commits)")[![StyleCIBot](https://avatars.githubusercontent.com/u/11048387?v=4)](https://github.com/StyleCIBot "StyleCIBot (1 commits)")

---

Tags

yii2extension

### Embed Badge

![Health badge](/badges/carono-yii2-rbac/health.svg)

```
[![Health](https://phpackages.com/badges/carono-yii2-rbac/health.svg)](https://phpackages.com/packages/carono-yii2-rbac)
```

###  Alternatives

[kakadu-dev/yii2-jwt-auth

Extension provide JWT auth for Yii2

105.8k](/packages/kakadu-dev-yii2-jwt-auth)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
