$auth_usersのユーザーに管理者権限を与える †
PukiWikiでは管理者権限が必要な操作では、常にフォームにパスワードを入力することが求められるが、これはとても面倒。$auth_usersで指定されたユーザーのうち、指定されたユーザーを管理者として、管理者パスワードを入力する必要をなくす方法を考える。
まず、pukiwiki.ini.phpに次のような記述を追加し、$admin_usersに管理人とするユーザー名を登録する。
$admin_users = array(
'admin',
);
次にauth.phpのpkwk_loginを次のように書き換える。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| function pkwk_login($pass = '')
{
global $adminpass, $auth_users, $admin_users;
if (! PKWK_READONLY && isset($_SERVER['PHP_AUTH_USER']) &&
in_array($_SERVER['PHP_AUTH_USER'], $admin_users) &&
pkwk_hash_compute(
$_SERVER['PHP_AUTH_PW'],
$auth_users[$_SERVER['PHP_AUTH_USER']]
) === $auth_users[$_SERVER['PHP_AUTH_USER']])
{
return TRUE;
} else if (! PKWK_READONLY && isset($adminpass) &&
pkwk_hash_compute($pass, $adminpass) === $adminpass) {
return TRUE;
} else {
sleep(2); // Blocking brute force attack
return FALSE;
}
}
|
こうしてもパスワード入力フォームは表示されるが、パスワードを入力しないで送信しても基本的にはエラーが出ないようになる。(このようにしてもパスワード欄を空にするとエラーが出ることがある。そのような時は、パスワード欄に何か文字を入れる必要がある。)