特定のモジュールの管理者かどうかは 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では、データベースアクセスのためのリソースを節約するために、デフォルトですべてのロール情報をロードすることはしません。そのため、コンテクスト外のモジュールのロール情報を利用するときは、上記のように明示的にロール情報ロードを実行する必要があります。