des1roer
@des1roer
ученье - свет, а неученье - приятный полумрак

Yii 2 запрет к модулю?

как ограничить доступ к модулю? вот я отнаследовал все контролеры от базового и в нем прописал
<?php

namespace app\modules\video\controllers;

use yii\web\Controller;

class DefaultController extends Controller {

    public function actionIndex()
    {
        return $this->render('index');
    }

    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'only' => ['*'],
                'rules' => [
                    [
                        'actions' => ['*'],
                        'allow' => true,
                        'roles' => ['@'],
                    //  'roles' => ['admin'],
                    ],
                ],
            ],
        ];
    }

}


но доступ на все открыт
  • Вопрос задан
  • 4014 просмотров
Решения вопроса 1
des1roer
@des1roer Автор вопроса
ученье - свет, а неученье - приятный полумрак
можно в \modules\video\Module.php

добавить

public function beforeAction($action)
    {

        if (!parent::beforeAction($action))
        {
            return false;
        }

        if (!Yii::$app->user->isGuest)
        {
            return true;
        }
        else
        {
            Yii::$app->getResponse()->redirect(Yii::$app->getHomeUrl());
            //для перестраховки вернем false
            return false;
        }
    }


2 вариант
\config\web.php
$config = [
    'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'language' => 'ru',
    'timezone' => 'Asia/Yekaterinburg',
    'modules' => [
        'user' => [
            'class' => 'amnah\yii2\user\Module',
        ],
        'video' => [
            'class' => 'app\modules\video\Module',
            'as access' => [ // if you need to set access
                'class' => 'yii\filters\AccessControl',
                'rules' => [
                    [
                        'allow' => true,
                        'roles' => ['@'] // all auth users
                    ],
                ]
            ],
        ],
    ],
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AlikDex
Точно не помню щас вот. Но что-то типа:
'rules' => [
                    [
                        'actions' => ['login', 'error'], // тут список разрешенных экшенов
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                    [
                        'actions' => ['*'],
                        'allow' => true,
                        'roles' => ['admin'],
                    ],
                ],

Указываешь роль, и что ей разрешено делать перечисляя список методов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы