Всем привет. Подскажите как правильно закрыть админку от гостей, т.е. если человек не авторизован на сайте, перебрасывать его на страницу логина. Сейчас сделал так в SiteController.php, но не уверен насколько это правильно:
public function actionIndex()
{
// renders the view file 'protected/views/site/index.php'
// using the default layout 'protected/views/layouts/main.php'
if(Yii::app()->user->isGuest)
{
$this->redirect('site/login');
}else{
$this->render('index');
}
}
Отнаследовать все админские контроллеры от некоего базового и применить в нем фильтр accessControl.
Если незалогиненный пользователь тыкнется в защищенный контроллер, его перебросит на страницу логина (задается параметром loginUrl конфига компонента user), при этом ему автоматически пропишется в сессию урл, на который он тыкался. Этот урл можно извлечь следующим образом: Yii::app()->user->returnUrl
Иными словами, в экшне логина проверяете, есть ли return url, если да - перекидываете на него, если нет - ну, на какой-то дефолтный.
Если это внутри модуля - нужно импортировать отдельно, например:
public function init() {
// this method is called when the module is being created
// you may place code here to customize the module or the application
// import the module-level models and components
$this->setImport(array(
'admin.filters.*',
'admin.models.*',
'admin.components.*',
'admin.controllers.AController', // <<<========
));
}
Ну и вообще, смотря куда положили файл. Проверьте, что он где-нибудь по стандартному пути лежит, типа в controllers или components