カテゴリ | |
---|---|
サマリ | ページごとにユーザに対して閲覧・編集を許可する方法 |
バージョン | 1.4.6 |
投稿者 | べるの |
状態 | 完了 |
投稿日 | 2006-05-22 (月) 17:38:44 |
PukiWikiの閲覧・編集の制限について調べておりますが、不明な点があり、ご教授ください。
やりたいことは
userA・・・閲覧専用ユーザ userB・・・グループB userC・・・グループC userD・・・管理者
に対して
hoge1/hoge2/hogeB(userAに閲覧許可、userBとuserDに閲覧・編集を許可) hoge1/hoge2/hogeC(userAに閲覧許可、userCとuserDに閲覧・編集を許可) hoge1/hoge2/hogeD(userAに閲覧許可、userDに閲覧・編集を許可) その他のページは、全てのユーザに閲覧を許可
をやりたいのですが、「pukiwiki.ini.php」の 「Read auth regex」と「Edit auth regex」を編集して試しているのですが、うまくいきません。 そこで、これを実現させるためには、制限ページの正規表現を設定することで、実現可能ことなのでしょうか。ご教授ください。
私が試した設定です。閲覧制限から試しています。
$auth_users 'userA' => '{x-php-md5}passwd', //管理者 'userB' => '{x-php-md5}passwd', //グループA 'userC' => '{x-php-md5}passwd', //グループB 'userD' => '{x-php-md5}passwd', //閲覧専用 $auth_method_type = 'pagename'; // By Page name $read_auth = 1; $read_auth_pages '#^page1.*$#' => 'userA,userB', '#^page2.*$#' => 'userA,userC', '#^page3.*#' => 'userA,userD', '#^.*$#' => 'userA,userB,userC,userD',
hoge1/hoge2/page1(管理者とグループAのユーザに閲覧を許可) hoge1/hoge2/page1/page1 Contact Box(管理者とグループAのユーザに閲覧を許可) hoge1/hoge2/page2(管理者とグループBのユーザに閲覧を許可) hoge1/hoge2/page2/page2 Contact Box(管理者とグループBのユーザに閲覧を許可) page3/(管理者と閲覧専用のユーザに閲覧を許可) page3/page3 Contact Box(管理者と閲覧専用のユーザに閲覧を許可)
上記のように設定を行い、私の認識だと「userB」が「page2」にアクセスすると、 Basic認証のダイアログが表示されると思っていたのですが、表示されずにアクセス できてしまいます。 制限ページ名の正規表現に「.*」を使用しているのは、「page1」の子ページを 作成するときに、「page1 ・・・」のように先頭に必ず「page1」をつけるように して、「page1」以下の子ページ全てを制限したいと考えたからです。 どのあたりが間違っているのか、ご教授お願いいたします。
$edit_auth = 1; $edit_auth_pages '#^.*$#' => 'userA', '#^page1.*$#' => 'userA, userB', '#^page2.*$#' => 'userA, userC',
書き込み制限は、上記設定により実現することができました。閲覧の制限は難しそうです。
以下、まとめです。
// User definition $auth_users = 'userA' => '{x-php-md5}passwd', //管理者 'userB' => '{x-php-md5}passwd', //グループA 'userC' => '{x-php-md5}passwd', //グループB 'userD' => '{x-php-md5}passwd', //閲覧専用 // Authentication method $auth_method_type = 'pagename'; // By Page name // Read auth (0:Disable, 1:Enable) $read_auth = 1; // Read auth regex $read_auth_pages = array( '#^hoge1/hoge2/page1#' => 'userA,userB', '#^hoge1/hoge2/page2#' => 'userA,userB', '#^page3#' => 'userA,userD', '#^(?!(hoge1/hoge2/page1|hoge1/hoge2/page2|page3)).#' => 'userA,userB,userC,userD', // Edit auth (0:Disable, 1:Enable) $edit_auth = 1; // Edit auth regex $edit_auth_pages = array( '#^.*$#' => 'userA', '#^hoge1/hoge2/page1#' => 'userA,userB', '#^hoge1/hoge2/page2#' => 'userA,userC',
以上
正規表現がどのように評価されるか掴めましたので、正規表現をもっとスマートに記述できないか考えて見ます。ありがとうございました。