■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。

Re: Admin領域へのIPアドレスによるアクセス制限

ryuring > Re: Admin領域へのIPアドレスによるアクセス制限 @ 2011/3/1 0:48
こんばんは。

BaserCMSのアップデートに耐えうるようにカスタマイズするというのが結構悩みどころなのですが、
今回の要件であれば、BaserCMS のプラグインフックという仕組みを使えば
コアには何も手を加えずに beforeFilter をフックできます。
http://basercms.net/manuals/programmers/5.html

プラグインといっても1ファイルで簡単に実装できます。
次のような構成にし、クラスを一個作ります。
(プラグイン名は適当にadmin_permissionとしました)

■ フォルダ構成
app
 |- plugins
    |- admin_permission
      |- controllers
        |-components
          |- admin_permission_hook.php


■ admin_permission_hook.php
class AdminPermissionHookComponent extends Object {
	
	var $registerHooks = array('initialize','beforeRender');
	var $allowClients = array('192.168.0.1','192.168.1.1','localhost','127.0.0.1');
	function initialize(&$controller){
		if(!empty($controller->params['admin'])){
			$controller->components += array('RequestHandler');
		}
	}
	function beforeRender(&$controller){
		if(!empty($controller->params['admin']) && $controller->name != 'CakeError'){
			if(!in_array($controller->RequestHandler->getClientIP(),$this->allowClients)){
				$controller->notFound();
			}
		}
	}
	
}


とりあえず、プラグインフックの仕組みだけお伝えしたかったので、許可するIPはクラスにハードコーディングしちゃってます。
許可しないIPからのアクセスの場合、NOT FOUNDとするようにしているのですが、その際に、$controller->params['admin'] が有効のまま呼び出されてしまうので、コントローラーがCakeErrorの場合にはチェックしないようにしてます。

利用するには、管理画面のプラグイン一覧で有効にする必要がありますのでご注意ください。
あと、これをプラグインとして配布するには、許可IPを管理画面で登録できるようにしたりする必要がありますね。

みんなでBaserCMSのプラグイン開発で盛り上がっていければ嬉しいですね〜

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
41 人のユーザが現在オンラインです。 (38 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 41