Как включить профилирование БД только для администратора? Если я определю это статически в конфиг, приложение еще не знает, является ли пользователь администратором или нет.
В качестве предложения, в контроллере вы можете сделать:
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
класс, чтобы установить состояние включения профилирования или сделать это после успешного входа в систему в строке.
Других решений пока нет …