PukiWikiでユーザー・パスワードによる閲覧制限をもうけたい場合、
まず、pukiwiki.ini.phpの243行目あたりにユーザーを追加する。
// User definition
$auth_users = array(
'hogehoge' => 'password', //追加ユーザー
// Username => password
//'foo' => 'foo_passwd',// Cleartext
//'bar' => '{x-php-md5}f53ae779077e987718cc285b14dfbe86',// PHP md5()'passwd'
そして260行目あたりのRead auth設定を有効にし、($read_auth=1)
制限を設けるwikiページ名を#の間に指定して (正規表現も可)、閲覧できるユーザーを記述する。
// Read auth (0:Disable, 1:Enable)
$read_auth = 1;
$read_auth_pages = array(
// Regex Username
'#SecretPage#' => 'hogehoge',
//'#(NETABARE|NetaBare)#' => 'foo,bar,hoge',
);
これはどこのPukiwiki解説ページでも書かれていること。
しかし自分の場合、pukiwiki.ini.phpの
PKWK_READONLYを1に設定しているため、
(これはPukiWiki全体がリードオンリーになり、編集ページを現れないようにする設定)
define('PKWK_READONLY', 1);の状態で、制限を設けたページを閲覧しようとすると、BASIC認証がコケてしまう。
PKWK_READONLYを0にすれば認証は問題なくできて、閲覧制限ページを見れるのだが
それはちょっと・・ということで、pukiwiki/lib/auth.php内のbasic_auth関数の200行目あたりを以下のようにいじった。
//
if (PKWK_READONLY ==2 || //デフォルトは==2はないが、此処を無効化したいので有り得ない設定に
! isset($_SERVER['PHP_AUTH_USER']) ||
! in_array($_SERVER['PHP_AUTH_USER'], $user_list) ||
! isset($auth_users[$_SERVER['PHP_AUTH_USER']]) ||
pkwk_hash_compute(
$_SERVER['PHP_AUTH_PW'],
$auth_users[$_SERVER['PHP_AUTH_USER']]
) !== $auth_users[$_SERVER['PHP_AUTH_USER']])
{
なぜ、PKWK_READONLYが1のとき、Read auth(閲覧制限)が弾かれる仕様になっているか
分からないが、とりあえず回避策として。