続・モジュールを作ろう!(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:あくまでも一例ですのでコピペじゃ上手く動きませんよ