Модуль mdmsoft/yii2-admin

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
zolton007
Сообщения: 180
Зарегистрирован: 2013.08.16, 08:43
Откуда: Воронеж

Модуль mdmsoft/yii2-admin

Сообщение zolton007 »

Здравствуйте!
Нет времени на свой велосипед, поэтому скачал и установил указанный модуль. Куски конфигов:

Код: Выделить всё

$config = [
    ...
    'aliases' => [
        '@mdm/admin' => '@vendor/mdm/yii2-admin',
        'layout' => 'right-menu'
    ],
    'modules' => [
        'admin' => [
            'class' => 'mdm\admin\Module',
        ]
    ],
    ...
    'components' => [
        'authManager' => [
            'class' => 'yii\rbac\DBManager',
            'defaultRoles' => ['guest']
        ],    
        ...
   ],
   ...     
   'as access' => [
       'class' => 'mdm\admin\components\AccessControl',
           'allowActions' => [
               'admin/*'
           ]
   ],
   ...       
]    
Как видно, роль по-умолчанию guest. Для проверки через админку (/admin/role) создал соответствующую роль, назначил ей некоторые права (/admin/role/view?id=guest) и проверяю права доступа в контроллере таким образом (пример):

Код: Выделить всё

public function actionList()
{
    if (Yii::$app->user->can('view_categories'))
    {
        $categories=Category::find()
            ->orderBy("tree, lft")
            ->all();

        return $this->render('list', [
            'categories' => $categories
        ]);
    }
    else
        throw new ForbiddenHttpException('Access denied');        
}
Все работает. Однако вопрос :!: : как ограничить доступ к самой админке?
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: Модуль mdmsoft/yii2-admin

Сообщение Loveorigami »

убрать
'allowActions' => [
'admin/*'
]
fedornabilkin
Сообщения: 17
Зарегистрирован: 2017.09.23, 15:17

Re: Модуль mdmsoft/yii2-admin

Сообщение fedornabilkin »

Здравствуйте. Обновил yii2 и теперь при создании permission получаю ошибку Call to undefined method mdm\admin\models\AuthItem::getDb()
После обновления в yiisoft/yii2/validators/UniqueValidator.php была добавлена строка, которая получает $db = $targetClass::getDb();
Соответственно в AuthItem такого метода нет.

Подскажите, пожалуйста, как мне переопределить AuthItem, чтобы добавить необходимый метод? В конфигурации модуля не нашел modelMap.
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: Модуль mdmsoft/yii2-admin

Сообщение Nex-Otaku »

См. класс ActiveRecord:

Код: Выделить всё

    /**
     * Returns the database connection used by this AR class.
     * By default, the "db" application component is used as the database connection.
     * You may override this method if you want to use a different database connection.
     * @return Connection the database connection used by this AR class.
     */
    public static function getDb()
    {
        return Yii::$app->getDb();
    }
fedornabilkin
Сообщения: 17
Зарегистрирован: 2017.09.23, 15:17

Re: Модуль mdmsoft/yii2-admin

Сообщение fedornabilkin »

Все оказалось проще. Обновил модуль до последней версии. BaseObject всему виной, которого раньше не было.
mkramer
Сообщения: 531
Зарегистрирован: 2014.12.14, 13:02

Re: Модуль mdmsoft/yii2-admin

Сообщение mkramer »

fedornabilkin писал(а): 2018.06.06, 09:02 Все оказалось проще. Обновил модуль до последней версии. BaseObject всему виной, которого раньше не было.
Раньше был просто Object, но в PHP 7.2 это имя стало служебным, пришлось переименовать во фреймворке
ptolomeus
Сообщения: 1
Зарегистрирован: 2019.06.12, 20:30

Re: Модуль mdmsoft/yii2-admin

Сообщение ptolomeus »

Нактнулся на ту же проблему. Окалось надо сменить имя валиадатора:

- [['name'], 'unique', 'when' => function() {
+ [['name'], 'uniqueValidate', 'when' => function() {

-public function unique()
-public function uniqueValidate()

так как 'unique' совпадает с UniqValidator которы пытается работаь с Model как с ActiveRecord
Ответить