Yii: включить профилирование только для администратора

Как включить профилирование БД только для администратора? Если я определю это статически в конфиг, приложение еще не знает, является ли пользователь администратором или нет.

1

Решение

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

public function init(){
$role=Rbac::role(Yii::app()->user->id);
if($role=="admin"){
Yii::app()->db->enableProfiling=true;
}
return parent::init();
}

Обратите внимание, что я предположил, что у нас есть класс с именем Rbac и у него есть метод, который получает роли пользователя по идентификатору пользователя (role()).

Кроме того, если у вас есть модуль, вы можете проверить это в init() Метод такой же, как у контроллера. Даже если у вас есть базовый класс контроллера, вы можете сделать это. Вы также можете сделать это в контроллере beforeAction() метод, если вам нужно пропустить это для некоторых конкретных действий.

Чтобы сделать это более элегантно, вы можете создать behavior и прикрепить его к контроллеру или положить в preload Конфигурационный файл

Другой способ сделать это, когда пользователь входит в систему в UserIdentity класс, чтобы установить состояние включения профилирования или сделать это после успешного входа в систему в строке.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]