続・モジュールを作ろう!(2) 権限のチェック
本記事は、Cubson というモジュール生成ツールを使った XOOPS のモジュール作成方法を解説するものです。
Cubson を使ってコード生成が出来る人,モジュールを作るために PHP を自分で調べながら学んでいこうという気がある人が対象です(すでに PHP を知っている人も,もちろん)。
本連載のコピペで何とかならない?,という人ではちょっと厳しいかも。
モジュールの一部の機能(画面)は管理ユーザでないと使えない、といった許可ユーザを限定する仕様にしたい場合は、isMemberOnly() または isAdminOnly() メソッドで true を返してやれば良いだけです。
この二つのメソッドは、class/AbstructAction.class.php で規定されています。
ご存知のとおり、モジュールを使える/使えないの制御は、通常ユーザモジュールにて行います。
しかしたとえば、閲覧系の画面はゲストユーザにも開放するが、編集系の画面は登録ユーザにしか使わせない、といった制御をしたい場合にこれらのメソッドが有用です。
サンプルA:登録ユーザのみが使える
/actions/XxxEditAction.class.php などで
/** * @public */ function isMemberOnly() { return true; }
サンプルB:モジュール管理ユーザのみが使える
/** * @public */ function isAdminOnly() { return true; }
以下のコードはちょっと手を加えてあって、モジュールコンフィグの allow_useredit が 0 に設定されている場合は isAdminOnly で true を返します。
サンプルC
function isAdminOnly() { if($this->mModule->getModuleConfig('allow_useredit') == '0'){ return true; } }
なおモジュールコンフィグは、xoops_version.php に以下の様に記述することで追加できます*1(管理者が、モジュールの「一般設定」管理画面で設定できるようになります)。
$modversion['config'][] = array( 'name' => 'allow_useredit' , 'title' => "_MI_CUBOOKMARKEN_LANG_ALLOW_USEREDIT" , 'description' => '' , 'formtype' => 'yesno' , 'valuetype' => 'int' , 'default' => 1 , 'options' => array() ) ;
*1:あくまでも一例ですのでコピペじゃ上手く動きませんよ