rbac вопрос

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
leonidps
Сообщения: 268
Зарегистрирован: 2011.01.18, 19:40
Откуда: Псков

rbac вопрос

Сообщение leonidps »

web, console

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

        'authManager' => [
            'class' => 'yii\rbac\DbManager',
        ],
в консоли работает, таблица заполняется

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

php yii rbac/init
AR user-не работает, таблица не заполняется

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

    public function afterSave($insert, $changedAttributes) {
        if(parent::afterSave($insert, $changedAttributes)) {
            if ($insert) {
                $auth = Yii::$app->authManager;
                $role = $auth->getRole($this->role);
                $auth->assign($role, $this->id);
            }
        }
    }
 
Правила существуют не только для того, чтобы их нарушать.
Аватара пользователя
MetalGuardian
Сообщения: 208
Зарегистрирован: 2011.03.06, 02:42
Откуда: Киев

Re: rbac вопрос

Сообщение MetalGuardian »

parent::afterSave не возвращяет ничего, вызовите его просто первой строчкой и все
Аватара пользователя
leonidps
Сообщения: 268
Зарегистрирован: 2011.01.18, 19:40
Откуда: Псков

Re: rbac вопрос

Сообщение leonidps »

parent::afterSave не возвращяет ничего, вызовите его просто первой строчкой и все
действительно, надо повнимательней с документацией
afterSave() public method
This method is called at the end of inserting or updating a record.

The default implementation will trigger an EVENT_AFTER_INSERT event when $insert is true, or an EVENT_AFTER_UPDATE event if $insert is false. The event class used is yii\db\AfterSaveEvent. When overriding this method, make sure you call the parent implementation so that the event is triggered.
вот так работает

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

    public function afterSave($insert, $changedAttributes) {
        parent::afterSave($insert, $changedAttributes);
            if ($insert) {
                $auth = Yii::$app->authManager;
                $role = $auth->getRole($this->role);
                $auth->assign($role, $this->id);
            }
        
    }
Ок.А как поступать в случае редактирования присоединения? Например, администратор изменил роль пользователя?

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

    public function afterSave($insert, $changedAttributes) {
        parent::afterSave($insert, $changedAttributes);
            if ($insert) {
                $auth = Yii::$app->authManager;
                $role = $auth->getRole($this->role);
                $auth->assign($role, $this->id);
            } else {
                ???
            }
        
    }
Или удалил пользователя?
Правила существуют не только для того, чтобы их нарушать.
Ответить