「メンテナンス中は、メッセージを表示し、ログイン中のユーザーはログアウトにする。」という仕様で、メンテナンスモードプラグインを使って処理します。
Maintenance plugin for CakePHP
参考:メンテナンスモードを簡単実装できるMaintenance plugin | CakePHPクッキング
bootstrap.php
CakePlugin::load('Maintenance'); Configure::write('Maintenance.enable', false);
DBにフラグを持って、フラグがONならメンテ中にします。
AppController.php
public function beforeFilter() { // メンテナンスモード(フラグがONならメンテ中にする) if ($this->_config['Config']['maintenance']) { Configure::write('Maintenance.enable', true); $this->Maintenance = $this->Components->load('Maintenance.Maintenance', array( // メンテンス時に表示するアクション 'maintenanceUrl' => array( 'controller' => 'homes', 'action' => 'index' ), // メンテンス時でも実行できるアクション 'allowedAction' => array( 'posts' => array('action1'), 'users' => array('action1', 'action2') ), // メンテナンスにしないIP //'allowedIp' => array('127.0.0.1'), ) ); $this->Maintenance->initialize($this); // ログイン中のユーザーは強制ログアウト $this->Auth->logout(); $this->Session->destroy(); } }
個々のControllerで
public function beforeFilter(){ parent::beforeFilter(); }
Viewでもフラグを見て、メンテ中の表示をしています。
日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)