Отключить компонент для пользователя

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Отключить компонент для пользователя

Сообщение Demon_id » 2015.10.29, 14:28

Есть компонент (мой) для работы со сторонним апи. Подключается через конфиг.
По коду используется так:

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

if(Yii::$app->get('myApi', false)) {
Yii::$app->myApi->...
}
компонент не обязательный, потому и используется такая проверка.

Теперь мне понадобилось чтобы этот компонент был активен для конкретного пользователя. Но в местах вызова ничего менять не хочется. Хотелось бы как то обойтись всё тем же конфигом. Как то так:

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

...
'myApi'=>[
'class'=>'namespace\MyApi'
'allowUsers'=>[5, 7, 9]    
],
...
Как бы мне в классе компонента деактивировать его если текущий юзер не свпал с allowUsers?

Аватара пользователя
Roksalana
Сообщения: 213
Зарегистрирован: 2014.01.14, 09:34

Re: Отключить компонент для пользователя

Сообщение Roksalana » 2015.10.29, 19:30

Demon_id писал(а): Как бы мне в классе компонента деактивировать его если текущий юзер не свпал с allowUsers?
Если не хочется менять в местах вызова, меняйте конструктор компонента.
Т.е в своем компоненте напишите что-то типа этого:

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

public $allowUsers;

public function __construct($config = [])
    {
        if(!in_array(Yii->$app->user->getId(), $this->allowUsers))
        {
        return parent::__construct($config);
        }
        else return null;
    }
Думаю должно сработать.

Ответить