ホーム > フォーラム > 開発 > コア開発 > XC2.1確認

XC2.1確認
投稿者: Marijuana | 投稿日時: 2007/4/19 20:36 | 閲覧: 8637回
Marijuana
$root->mContext->mUser->isInRoleで確認なのですが、userモジュールのプリロードで定義されていると思うのですが
if ($context->mXoopsUser->isAdmin(-1)) {
	$roles[] = "Site.Administrator";
}
if (in_array(XOOPS_GROUP_ADMIN, $_SESSION['xoopsUserGroups'])) {
	$roles[] = "Site.Owner";
}

ぱっと見Site.AdministratorとSite.Ownerが逆?と思ったのですがどっちも同じですよね?(管理者グループかチェックしてるだけ)
isAdminの中のcheckRightで、
if (in_array(XOOPS_GROUP_ADMIN, $_SESSION['xoopsUserGroups'])) {
と同じ
if (in_array(XOOPS_GROUP_ADMIN, $gperm_groupid)) {
になっているので・・・
何か違いがあるのでしょうか?

コメント(3)

Re: XC2.1確認 
投稿者: minahito | 投稿日時: 2007/4/19 23:17
minahito
あまり知られていませんが、 XoopsUser::isAdmin(-1) は「いずれかのモジュールの管理権限を持つ場合」に true が戻ってくる特別なパターンになります。したがって、 XOOPS_GROUP_ADMIN グループは isAdmin(-1)==true のための十分条件ということになります。(必要十分条件ではない)

詳しくはこちらを参考にしてください
UserOverview

引用:
Marijuanaさんは書きました:
isAdminの中のcheckRightで、
if (in_array(XOOPS_GROUP_ADMIN, $_SESSION['xoopsUserGroups'])) {
と同じ
if (in_array(XOOPS_GROUP_ADMIN, $gperm_groupid)) {
になっているので・・・


これは単に XOOPS_GROUP_ADMIN なら「いずれかのモジュールの管理権限を持っているか?」という問いに対して必ず真なので、 SQL 文を一回分省略するために突っ込まれている if 文だと思いますよ。 XOOPS_GROUP_ADMIN でなければ $criteria を構築を続けて問い合わせを実行するはずです。

以下余談、
isAdmin の引数に関しては「モジュール開発者側で仕様を勘違いしとらんか?」ということで .org で問題になった(記憶が確かならそこでパラメータが調整された)ことがあり、よく覚えています。いまひとつ信用がおけず危なっかしいので、絶対の仕様を保障するものとして、あらためて Role にマッピングしました。(^^)

管理権限をひとつでも持つユーザーが調べたければ Site.Administrator を、システム固定の全能管理グループに入っているか調べたければ Site.Owner を調べれば OK です。
Re: XC2.1確認 
投稿者: Marijuana | 投稿日時: 2007/4/19 23:44
Marijuana
引用:
あまり知られていませんが、 XoopsUser::isAdmin(-1) は「いずれかのモジュールの管理権限を持つ場合」に true が戻ってくる特別なパターンになります。

俺がPHP理解してない?
コード追うとそう思えない・・・
Re: XC2.1確認 
投稿者: Marijuana | 投稿日時: 2007/4/19 23:59
Marijuana
管理者グループ以外でモジュールに管理者権限があるとtrueか(; ̄ー ̄A アセアセ・・・

    投票(0)

    新しいものから | 古いものから | RSS feed
     
    To Top