Нет разрешений на действие индекса администратора пользователя dektrium

avatar
Toma Tomov
7 апреля 2018 в 22:16
638
1
0

Я установил пользователя dektrium, но когда переопределяю AdminController.php и пытаюсь достичь admin/index, я получаю Forbidden(403). После переопределения поведения на:

'rules' => [
        [
           'allow' => true,
           'roles' => ['?'],
       ],
],

ошибка все та же. Сделал это, потому что у меня до сих пор нет ролей. Что может вызвать такое поведение? Я нацелился на источник index.php (тот, что в модуле dektrium\yii2-user). Спасибо!

Источник
Muhammad Omer Aslam
8 апреля 2018 в 11:22
0

вы хотите создать действие index, которое должно быть разрешено для пользователей guest без входа в систему?

Ответы (1)

avatar
Muhammad Omer Aslam
8 апреля 2018 в 12:11
1

Вы должны следовать этим правилам, чтобы переопределить контроллеры для пользователя dektrium

directory structure

Вы можете изменить следующее, если хотите, чтобы это было во внешнем интерфейсе, нужно изменить только начальную папку

- backend
   - controllers
     - user
       - AdminController

Ваша конфигурация для модуля user в разделе module должна выглядеть следующим образом

'modules' => [
  ..............
    'user' => [
            'controllerMap' => [
                'admin' => 'backend\controllers\user\AdminController' ,
            ] ,

Для переопределения контроллера новым действием index ваш минимальный код должен выглядеть следующим образом

AdminController

<?php 

namespace backend\controllers\user;
use dektrium\user\controllers\AdminController as BaseAdmin;

class AdminController extends BaseAdmin {

    public function behaviors() {
        $behaviours = parent::behaviors ();
        $behaviours['access']['rules'][] = [
            'allow' => true ,
            'actions' => [ 'index' ] ,
            'roles' => [ '?' ]
        ];
        return $behaviours;
    }

    public function actionIndex(){
        return $this->render('index');
    }
}
Toma Tomov
8 апреля 2018 в 14:56
0

Чего мне не хватало, так это части controllerMap. Теперь проблема такая же с модулем dektrium rbac :D Опять Forbidden(403) и я думаю, что я точно следовал документации, если это все - github.com/dektrium/yii2-rbac/blob/1.0.0 -альфа/документы/…

Muhammad Omer Aslam
8 апреля 2018 в 14:58
0

покажите конфигурацию пользовательского раздела в разделе module убедитесь, что вы не используете controllerMap в параметре 'as frontend' => 'dektrium\user\filters\FrontendFilter' ,, так как эта строка ограничит доступ к контроллеру администратора из внешнего приложения @TomaTomov

Muhammad Omer Aslam
8 апреля 2018 в 14:59
0

также проверьте свою версию, используя composer show -i @TomaTomov

Toma Tomov
8 апреля 2018 в 15:02
0

Пользовательская версия - 0.9.13. Версия Rbac — 1.0.0-альфа. Моя конфигурация в backed/config/main.php - это 'user' => [ // following line will restrict access to profile, recovery, registration and settings controllers from backend //'as backend' => 'dektrium\user\filters\BackendFilter', 'controllerMap' => [ 'admin' => 'backend\controllers\user\AdminController' ], ], 'rbac' => [ 'class' => 'dektrium\rbac\RbacWebModule', ], в разделе модуля.

Toma Tomov
8 апреля 2018 в 15:03
0

В common\config\main.php я добавил пользовательский класс следующим образом 'modules' => [ 'user' => [ 'class' => 'dektrium\user\Module', 'enableGeneratingPassword' => true, 'enableRegistration' => true, ], ],

Muhammad Omer Aslam
8 апреля 2018 в 15:12
0

ваша конфигурация выглядит нормально, вы обновили свое поведение, как в ответе выше? @ТомаТомов

Toma Tomov
8 апреля 2018 в 15:18
0

да. Я могу получить доступ к пользователю yii2 AdminController.php. Теперь проблема в контроллерах yii2-rbac.

Muhammad Omer Aslam
8 апреля 2018 в 15:20
1

ааа, хорошо, я думал, у вас проблема с AdminController, вы можете добавить отдельный вопрос со всем относительным кодом, связанным с конфигами в этом вопросе, посмотрим, в чем проблема @TomaTomov