氷川 XOOPS 研究室

モジュール制作、ウェブサービスなどなど

続・モジュールを作ろう!(2)アクションの権限チェック anchor.png

モジュールの一部の機能(画面)は管理ユーザでないと使えない、といった許可ユーザを限定する仕様にしたい場合は、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 あくまでも一例ですのでコピペじゃ上手く動きませんよ

Front page   Freeze Diff Backup Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Counter: 3448, today: 1, yesterday: 1
Last-modified: 2008-08-29 (Fri) 19:31:18 (JST) (3889d) by kilica

Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project - xc-tokai