$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;
    }
} 

こうしてもパスワード入力フォームは表示されるが、パスワードを入力しないで送信しても基本的にはエラーが出ないようになる。(このようにしてもパスワード欄を空にするとエラーが出ることがある。そのような時は、パスワード欄に何か文字を入れる必要がある。)


ページ情報
[ トップ ]   [ 編集 | 凍結 | 差分 | バックアップ | 添付 | 複製 | 名前変更 | リロード ]   [ 新規 | 子ページ作成 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]