Таблицы RBAC в yii2
- Как создать разрешения, роли и правила в yii2, используя gii?
- Как назначить роли в yii2?
Как реализовать все это, используя ниже 4 таблицы?
- auth_item
- auth_item_child
- auth_assignment
- auth_rule
Рассмотрим случай:
Есть два пользователя Admin и FieldOfficer:
У меня есть приложение SHGProfile CRUD.
FieldOfficer может получить доступ только к действиям создания и просмотра в SHGProfile. Принимая во внимание, что администратор может получить доступ ко всем действиям создания, просмотра, обновления и удаления.
Здесь роли - это Admin и FieldOfficer. Разрешения: createGroup, viewGroup, updateGroup и deleteGroup
Вот в какой таблице нам нужно создать роли и разрешения и как назначить это пользователю?
1 ответ
Здесь я объясню, какие таблицы содержат роль и разрешения и как назначать разрешения пользователю:
Вставьте все свои роли в таблицу auth_item, т. Е. Admin, FieldOfficer, createGroup, viewGroup, updateGroup, deleteGroup.
Назначьте createGroup, viewGroup, updateGroup и deleteGroup для роли администратора в таблице auth_item_child.
Назначьте createGroup, viewGroup роли FieldOfficer в таблице auth_item_child.
Назначьте пользователю разрешение в таблице auth_assignment с идентификатором роли и идентификатором пользователя. Назначьте только родительскую роль, такую как Admin или FieldOfficer.
Теперь в вашем контроллере используйте 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 ], ], ]; }