Такое удаление пользователя "на ходу" - довольно специфическая ситуация и может вызвать ряд ошибок при работе с базой. Id в сессии остается, а вот данных пользователя в БД уже нету... Так что сессию следует прибивать сразу же после удаления.
Поскольку получить доступ к чужой сессии, вроде как (не уверен точно), невозможно, то поискав решения, нашел 2 основных:
1. Хранить сессии в БД и удалять их оттуда.
2. Создать и выставить в true флаг forceLogout в модели пользователя и проверять ее вместе с isGuest.
Однако поломать голову пришлось... но думаю, что самый простой способ - это вставить в файл
\protected\components\BeginRequest.php сразу после
- Код: Выделить всё
public static function updateStatusAd() {
вот такой код:
- Код: Выделить всё
if (!Yii::app()->user->isGuest){
$model = User::model()->findByPk(Yii::app()->user->id);
if (!$model || !$model->active) Yii::app()->user->logout();
}
Хотя лишний раз загружать модель не очень хочется...