モジュールの公開範囲内でのアクセス権限設定

2007/07/11 | XOOPS

Xoopsには標準でモジュールへのアクセス権限設定機能が用意されている。複雑でないアクセス権限(例えば管理機能と公開機能に単純に分けられるような)であれば、この機能で十分まかなえる。これはモジュールを作成する際のお作法として、管理者機能はadminというサブディレクトリ内にファイルを配置すればよいからだ(つまりadminディレクトリ内かどうかで判断しているだけだ・・・多分)。
上記以外の権限チェック、つまり管理者かどうかというチェックではなく、例えば登録ユーザか否かのようなチェックや、あらかじめ許可されたグループに登録されたユーザか否か、というようなチェックが必要な場合は、スクリプト毎にアクセス権のチェックをしてやる必要がある。
地道にデータベースにSQLを発行してチェックしてもいいわけだが、諸々用意されているものを使うほうが簡単でいい。ここではその便利な方法を、既存モジュールから列挙してみた(既存モジュールの「フォーラム」を参照した)。

bool $xoopsUser->isAdmin($xoopsModule->mid())

$xoopsModule->mid()はモジュール管理番号を返し、それを引数としている$xoospUser->isAdmin()はアクセスしてきたユーザが、当該番号のモジュールに対して管理者権限をもっているかどうか、をチェックしてくれる。

bool check_priv_forum_auth($xoopsUser->uid(), $_POST[‘forum’], true)
bool is_moderator($forum, $xoopsUser->uid())

上記はそれぞれ専用の関数を用意し、それらの関数内ではデータベースに対してSQLを発行しているようだ。

つまり結局アクセス権のチェックは以下の二つの関数、モジュールの一般設定で設定する$xoopsModuleConfig(設定されていれば)、およびとデータベースへのSQLの発行などでチェックするということになりそうだ。
$xoopsModule->mid()
$xoospUser->isAdmin()

XoopsといえどもプログラムはPHPだから難しいわけではない。基本的にXoopsのお作法に則ったアクセス権の管理さえ出来れば、モジュールを作成するのは何も難しいことはない、ということになる。

ここまでくればハックが必要なモジュール(白扇など)をのぞけば大抵の機能を作ることが出来るようになるだろう。

コメントを残す


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net