Друзья
Правильная интеграция KFM (Kae’s File Manager) с Yii
28 сентября 2011
Правильная интеграция KFM (Kae’s File Manager) с Yii
Для того, чтобы файловым менеджером KFM, который предназначен только для администраторского раздела сайта, не могли воспользоваться любые случайные посетители сайта, его нужно каким-либо образом привязать к аутентификации из Yii. Если пользователь аутентифицирован в системе управления Yii-сайтом, то он может использовать KFM и производить манипуляции с файлами на сервере, а в противном случае — нет.
Самым простым способом такой интеграции является способ, описанный в данной заметке.
Для начала нужно создать новое действие actionIsAuthenticated в основном контроллере приложения управления сайтом:
class SiteController extends BackendController { // фильтры контроллера public function filters() { return array( 'accessControl', 'postOnly + logout', ); } // настраиваем права доступа к действиям контроллера public function accessRules() { return array( // isAuthenticated доступен всегда и всем array('allow', 'actions'=>array('isAuthenticated'), 'users'=>array('*')), // страница логина доступна только не аутентифицированным пользователям array('allow', 'actions'=>array('login'), 'users'=>array('?')), array('deny', 'actions'=>array('login'), 'users'=>array('*')), // остальные действия по умолчанию доступы только аутентифицированным пользователям array('allow', 'users'=>array('@')), array('deny', 'users'=>array('*')), ); } // главная страница системы управления public function actionIndex() { $this->render('index'); } // ... // выход из системы управления сайтом // доступен только по HTTP POST public function actionLogout() { Yii::app()->user->logout(); $this->render('logout'); } // возвращает статус аутентификации пользователя public function actionIsAuthenticated() { $this->layout=''; echo Yii::app()->user->isGuest ? 'no' : 'yes'; } }
Теперь открываем и редактируем конфигурационный файл KFM configuration.php. Нужно добавить следующий код в самом начале этого файла:
$curl=curl_init(); curl_setopt($curl, CURLOPT_URL, 'http://'.$_SERVER['HTTP_HOST'].'/backend/site/isAuthenticated'); curl_setopt($curl, CURLOPT_RETURNTRANSFER , 1); curl_setopt($curl, CURLOPT_COOKIE , 'PHPSESSID='.$_COOKIE['PHPSESSID']); $status=curl_exec($curl); if(curl_errno($curl)) $status=''; curl_close($curl); if($status!='yes') die;
Основная идея заключается в том, что мы запрашиваем статус аутентификации пользователя передавая серверу посредством CURL его идентификатор сессии.