Lab / YII

YII2: Запретить создание материалов в CRUD не авторизованным пользователям (Rbac)

Сегодня я поделюсь простым трюком как запретить всем подряд создавать материалы через только что сгенерированный вами CRUD. Всё решение заёмет у вас 7-10 строк и 2 минуты вашего времени.

Для начала откройте контроллер вашего CRUD приложения,

В самом начале где идут подключеиня, подключим контроль прав доступа встроенный в YII2:

use yii\filters\AccessControl;

затем нйдите там вот такую строку:

class DefaultController extends Controller
{
 public function behaviors()
 {
 return [
 'verbs' => [
 'class' => VerbFilter::className(),
 'actions' => [
 'delete' => ['post'],
 ],
 ],

Сразу за ней вставьте следующий код:

 'access' => [
 'class' => AccessControl::className(),
 'only' => ['create','update','delete'],
 'rules' => [
 [
 'actions' => ['create','update','delete'],
 'allow' => true,
 'roles' => ['@'],
 ],
 ],
 ],

Давайте разберёмся, что тут происходит.

AccessControl —

'only' => ['create','update','delete'] — Здесь мы говорим, что будем контролировать только создание, редактирование и удаление материалов

'allow' => true — Разрешаем только...

'roles' => ['@'] — Авторизованным пользователям

Где ['@'] — авторизованный пользователь и ['?'] — гость