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' => ['@'] — Авторизованным пользователям

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