2017 © Pedro Peláez
 

yii2-extension yii2-rbac

Yii2 RBAC extension

image

carono/yii2-rbac

Yii2 RBAC extension

  • Monday, June 18, 2018
  • by carono
  • Repository
  • 2 Watchers
  • 0 Stars
  • 438 Installations
  • PHP
  • 2 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 18 Versions
  • 15 % Grown

The README.md

yii2-rbac

Очередная реализация RBAC для yii2., (*1)

ВВЕДЕНИЕ

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

УСТАНОВКА

composer require carono/yii2-rbac, (*3)

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

yii migrate --migrationPath=@yii/rbac/migrations, (*5)

НАСТРОЙКА

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

'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 чтобы создались роли и создались доступы по контроллерам. Если настройки в конфиге изменились, то необходимо каждый раз вызывать команду. Все роли и доступы пересоздаются заново. При этом, уже навешанные на пользователей роли не удаляются., (*7)

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

ОСОБЕННОСТИ

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

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

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

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

или проверить самостоятельно, (*11)

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

ХЕЛПЕРЫ

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

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

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

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

'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
            ]
        ],
    ]

The Versions

18/06 2018

dev-master

9999999-dev

Yii2 RBAC extension

  Sources   Download

MIT

The Requires

 

by carno

18/06 2018

1.0.16

1.0.16.0

Yii2 RBAC extension

  Sources   Download

MIT

The Requires

 

15/04 2018

1.0.15

1.0.15.0

Yii2 RBAC extension

  Sources   Download

MIT

The Requires

 

19/12 2017

1.0.14

1.0.14.0

Yii2 RBAC extension

  Sources   Download

MIT

The Requires

 

13/11 2017

1.0.13

1.0.13.0

Yii2 RBAC extension

  Sources   Download

MIT

The Requires

 

11/11 2017

1.0.12

1.0.12.0

Yii2 RBAC extension

  Sources   Download

MIT

The Requires

 

09/11 2017

1.0.11

1.0.11.0

Yii2 RBAC extension

  Sources   Download

MIT

The Requires

 

17/10 2017

1.0.10

1.0.10.0

Yii2 RBAC extension

  Sources   Download

MIT

The Requires

 

10/10 2017

1.0.9

1.0.9.0

Yii2 RBAC extension

  Sources   Download

MIT

The Requires

 

10/06 2017

1.0.8

1.0.8.0

Yii2 RBAC extension

  Sources   Download

MIT

The Requires

 

by carno

28/03 2017

1.0.7

1.0.7.0

Yii2 RBAC extension

  Sources   Download

MIT

The Requires

 

by carno

25/03 2017

1.0.6

1.0.6.0

Yii2 RBAC extension

  Sources   Download

MIT

The Requires

 

by carno

16/02 2017

1.0.5

1.0.5.0

Yii2 RBAC extension

  Sources   Download

MIT

The Requires

 

by carno

20/12 2016

1.0.4

1.0.4.0

Yii2 RBAC extension

  Sources   Download

MIT

The Requires

 

by carno

15/12 2016

1.0.3

1.0.3.0

Yii2 RBAC extension

  Sources   Download

MIT

The Requires

 

by carno

13/12 2016

1.0.2

1.0.2.0

Yii2 RBAC extension

  Sources   Download

MIT

The Requires

 

by carno

10/12 2016

1.0.1

1.0.1.0

Yii2 RBAC extension

  Sources   Download

MIT

The Requires

 

by carno

03/12 2016

1.0.0

1.0.0.0

Yii2 RBAC extension

  Sources   Download

MIT

The Requires

 

by carno