現状、ページ認証には閲覧・編集許可するユーザー名を直接指定する必要があるが、ユーザー数が増加すると管理が煩雑になる。 ユーザーをグループに所属させ、グループ単位で認証設定することで、管理の手間を和らげる。
例:
の場合に
pukiwiki.ini.php にて
$auth_type = AUTH_TYPE_FORM;
または
$auth_type = AUTH_TYPE_BASIC;
例のような動作にするには以下のようなグループ定義を行う。
// Group definition $auth_groups = array( // Groupname => group members(users) 'valid-user' => '', // Reserved 'valid-user' group contains all authenticated users 'group_a' => 'user_1,user_2', 'group_b' => 'user_5,user_6', 'group_c' => 'user_8,user_9', ); $read_auth_pages = array( // Regex Groupname or Username '#^ProjectA#' => 'group_a', '#^ProjectX#' => 'group_b,group_c', '#^Salon#' => 'valid-user', // 認証を通ったユーザーであればだれでも );
if (PKWK_READONLY || ! $auth_user || count(array_intersect($auth_user_groups, $user_list)) === 0)という条件になっており、認証されたユーザー$auth_userが所属しているグループ$auth_user_groupsの中に$user_listの中身("Groupname or Username")が含まれているかは確認しているものの、$auth_userが$user_listの中身に含まれているかは見ていないようです。HTTP 302 でフォームなどに飛ぶ他の場合と違ってAUTH_TYPE_BASICモードの場合は認証用データ付きで同じURIにリクエストされるはずなので、従来のユーザー名のみ設定しかしていない場合は再び戻ってきた際にグループが一致しないからという理由で認証が拒否されてしまうようです。 -- 2016-02-14 (日) 08:53:48
if (isset($_SERVER['PHP_AUTH_USER'])) { (中略) } $auth_user = ''; $auth_user_groups = get_groups_from_username($user);の箇所で、初期化されていない$userを使ってget_groups_from_username()に渡しているエラーを解消しようとしてバグらせていたようです..... -- 2016-02-14 (日) 08:53:48の人 2016-02-17 (水) 20:04:23
'groupboobar' => 'foo,bar',なのですが、GroupBooBarに見えます。他はユーザー名からキー名を取っているようなので、GroupFooBar(をすべて小文字にしたもの)なのではと思うのですが..... -- 2016-02-14 (日) 09:24:52