============================================== РЕДАКТИРОВАТЬ ====================================
В соответствии с предложением Чарльза, я выполнил функцию Offline / Online, используя следующий код, основанный на коде Чарльза:
<?php
Class AppController extends Controller{
// prevents unauthorized access
public $components = array('Auth');
// the name of the model storing site_offline boolean
public $uses = array('Configuration');
// callback invoked before every controller action
public function beforeFilter() {
// returns your site_offline status assuming 0 is offline
if ($this->Configuration->get_site_status() == 1) {
$this->Auth->allow('*');
}else {
if(($this->Configuration->get_site_status() == 0) and (!$this->Auth->user() == null)){
// I set it up like this for now to allow access to any authenticated user,
//but later will change it to only allow admins access thru a login form
$this->Auth->allow('*');
}else{
//If site is offline and user is not authenticated, sent them to
// the a screen using the OFFLINE layout and provide a screen for login.
$this->layout = 'offline';
$this->setFlash('Maintenance Mode. Check back shortly.');
$this->Auth->deny('*');
}
}
}
}
?>
Затем я использовал jQuery, чтобы скрыть форму входа. Администратор нажимает на сообщение, чтобы показать форму входа. Это попытка предотвратить попытки входа в систему.
============================ КОНЕЦ РЕДАКТИРОВАНИЯ ================= =========================
Я хотел бы знать, каков наилучший способ создания «сайта в автономном режиме / онлайн» в CakePHP. В принципе, я хотел бы разрешить администратору отключать доступ к сайту всем зарегистрированным или нет. Офлайн-страница должна иметь доступ для входа, через который могут войти только администраторы.
Идея, которую я имею, состоит в том, чтобы создать некоторый контроллер панели мониторинга, где, как только администратор войдет в систему, он / она будет перенаправлен на эту панель управления, откуда он сможет получить доступ к другим действиям контроллера (admin_edit и т. Д.). Эта панель инструментов и все действия администратора (admin_delete и т. Д.) Должны использовать макет администратора.
Это хороший подход? Для автономной / онлайн-функции я должен создать таблицу настроек с полем site_offline, которое можно включить или выключить? Где в app_controller и какой код следует использовать, чтобы проверить его перед тем, как разрешить или запретить доступ к сайту?
Большое спасибо за вашу помощь,