Таблицы RBAC в yii2

  1. Как создать разрешения, роли и правила в yii2, используя gii?
  2. Как назначить роли в yii2?

Как реализовать все это, используя ниже 4 таблицы?

  1. auth_item
  2. auth_item_child
  3. auth_assignment
  4. auth_rule

Рассмотрим случай:

Есть два пользователя Admin и FieldOfficer:

У меня есть приложение SHGProfile CRUD.

FieldOfficer может получить доступ только к действиям создания и просмотра в SHGProfile. Принимая во внимание, что администратор может получить доступ ко всем действиям создания, просмотра, обновления и удаления.

Здесь роли - это Admin и FieldOfficer. Разрешения: createGroup, viewGroup, updateGroup и deleteGroup

Вот в какой таблице нам нужно создать роли и разрешения и как назначить это пользователю?

1 ответ

Здесь я объясню, какие таблицы содержат роль и разрешения и как назначать разрешения пользователю:

  1. Вставьте все свои роли в таблицу auth_item, т. Е. Admin, FieldOfficer, createGroup, viewGroup, updateGroup, deleteGroup.

  2. Назначьте createGroup, viewGroup, updateGroup и deleteGroup для роли администратора в таблице auth_item_child.

  3. Назначьте createGroup, viewGroup роли FieldOfficer в таблице auth_item_child.

  4. Назначьте пользователю разрешение в таблице auth_assignment с идентификатором роли и идентификатором пользователя. Назначьте только родительскую роль, такую ​​как Admin или FieldOfficer.

  5. Теперь в вашем контроллере используйте AccessControl для предоставления доступа вошедшим в систему пользователям согласно их роли

    public function behaviors()
    {
    
       return [
          'access' => [
          'class' => \yii\filters\AccessControl::className(),
          'only' => ['create', 'view' , 'update' , 'delete'],
          'rules' => [
    
              // allow all actions to Admin role users
              [
                  'allow' => true,
                  'actions' => ['create', 'view' , 'update' , 'delete'],
                  'roles' => ['Admin'],
              ],
              // allow create , view actions to FieldOfficer role users
              [
                  'allow' => true,
                  'actions' => ['create', 'view'],
                  'roles' => ['FieldOfficer'],
              ],
              // everything else is denied
           ],
         ],
       ];
       }
    
Другие вопросы по тегам