4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

特定のモジュールの権限があるかを判定する

Last updated at Posted at 2012-06-26

特定のモジュールの管理者かどうかは Module.dirname.Admin ロールかを確認することで判定できます。更に、特定のモジュールにアクセス権限があるかは Module.dirname.Visitor ロールかを確認することで判定できます。

例えば、userモジュールの管理者かどうかは次のように判定します:

<?php
$root = XCube_Root::getSingleton();

if ( $root->mContext->mUser->isInRole('Module.user.Admin') ) {
	// userモジュール管理権限あり
} else {
	// userモジュール管理権限なし
}

注意する点としては、userモジュール以外のコンテクスト(Context)では、ロール情報をロードする必要があります:

<?php
$root = XCube_Root::getSingleton();

$roleManager = new Legacy_RoleManager();
$roleManager->loadRolesByDirname('user');

if ( $root->mContext->mUser->isInRole('Module.user.Admin') ) {
	// userモジュール管理権限あり
} else {
	// userモジュール管理権限なし
}

ロール情報はデータベースのグループテーブルに基いています。XOOPS Cubeでは、データベースアクセスのためのリソースを節約するために、デフォルトですべてのロール情報をロードすることはしません。そのため、コンテクスト外のモジュールのロール情報を利用するときは、上記のように明示的にロール情報ロードを実行する必要があります。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?