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