../

任意のページごとの閲覧・編集制限 -- Ynak

目次

できること

任意のページに対する閲覧・編集・検索でアクセス制御を行う。

アクセス制御対象となるページは、以下のいずれかで決定できる。

(具体例)

PukiWiki-official の関連ページ

設定ファイルの仕様

pukiwiki.ini.phpに以下の項目を設定することで、 既存・新規作成ページに対するアクセス制御を行うことができる。

ユーザ定義

アクセス制御で使用するユーザとパスワードを設定する。

// ユーザ定義
$auth_users = array(
'foo' => 'foo_passwd',
'bar' => 'bar_passwd',
'hoge' => 'hoge_passwd',
);

1.4.6 以降のパスワード保存書式については、BugTrack/709 を参照

認証方式種別

××認証対象パターン定義で定義したパターンがどこにあったら、 マッチしたことにするのか、を設定する。

※今回からページ内容によるアクセス制御に対応した。

// 認証方式種別
// pagename : ページ名
// contents : ページ内容
$auth_method_type = "contents";

閲覧認証

閲覧認証フラグ

閲覧認証によるアクセス制御を行うかどうか設定する。 不要な場合はオフにすればパターンマッチングを行わないので、性能劣化を防止できる。

// 閲覧認証フラグ
// 0:不要
// 1:必要
$read_auth = 1;

閲覧認証対象パターン定義

閲覧認証をかけるページを決定するための正規表現パターンを設定する。 マッチしたページに閲覧認証をかける。 カンマ区切りで複数ユーザを書いても良い。

// 閲覧認証対象パターン定義
$read_auth_pages = array(
'/ひきこもるほげ/' => 'hoge',
'/(ネタバレ|ねたばれ)/' => 'foo,bar,hoge',
);

編集認証

編集認証フラグ

編集認証によるアクセス制御を行うかどうか設定する。 不要な場合はオフにすればパターンマッチングを行わないので、性能劣化を防止できる。

// 編集認証フラグ
// 0:不要
// 1:必要
$edit_auth = 1;

編集認証対象パターン定義

編集認証をかけるページを決定するための正規表現パターンを設定する。 マッチしたページに編集認証をかける。 カンマ区切りで複数ユーザを書いても良い。

// 編集認証対象パターン定義
$edit_auth_pages = array(
'/Barの公開日記/' => 'bar',
'/ひきこもるほげ/' => 'hoge',
'/(ネタバレ|ねたばれ)/' => 'foo',
);

検索認証フラグ

検索時にも閲覧認証と同等のアクセス制御が必要かどうか設定する。 どちらの場合も、ページ名は公開情報なので検索対象となる。

// 検索認証フラグ
// 0: 閲覧が許可されていないページ内容も検索対象とする
// 1: 検索時のログインユーザに許可されたページのみ検索対象とする
$search_auth = 0;

上記設定例の解説

上の例では

かなり強引にUNIXっぽく表現すると、こうなる。

アクセス権   ユーザID   グループ   ページ名
-rw----r--   bar        なし       Barの公開日記
-rw-------   hoge       なし       HogeOnly
-rw-r-----   foo        hoges      映画紹介~ネタバレ注意

※グループhogesには、barとhogeが所属するとする。


改造

本体の改造

PukiWiki1.4rc2(20030529版)をベースにする場合は、以下を改造する。 *1

pukiwiki.ini.php

設定ファイルの仕様で紹介した項目を追加して、適切な設定を行う。 すでに存在している$edit_auth, $edit_auth_usersの設定は削除するか、 コメントアウトすること。

プラグインの改造

アクセス制御する仕組みは用意したが、 実際にページにアクセスするのはすべてプラグインである。

よって、プラグインで以下の関数による事前チェックを行うように改造する必要がある。

アクセス制御用の関数仕様


引数説明
$pageページ名文字列
$auth_flagtrue: 現在のログイン状態で認証NGであれば、BASIC認証発動(デフォルト)
false:現在のログイン状態で判断するだけ
$exit_flagtrue: 認証NGの場合、check_xxxable関数側でNG画面に遷移する(デフォルト)
false:認証NGの場合でも、戻り値falseで戻ってくるだけ


戻り値true: 認証OK
false:認証NG

要改造プラグイン一覧

この改造に伴って一緒に改造する必要があるプラグインの一覧を以下に示す。 Ynakの環境で単にgrep -lE '(get_source|file)' pukiwiki/plugin/*.phpした結果+read.inc.phpなので漏れがあるかもしれない。

このうち少なくともedit, read, edit, backup, diffは絶対に改造する必要がある。

※改造したものからリンク先に改造方法を書く、ということでよろしければご協力お願いします。

推奨運用方式

Ynakのところで運用している方式と、その説明ページの内容をコピーしておく。

./推奨運用方式

注意事項

関連

 

コメント


*1 長いので別ページで。
*2 UNIXでも、rw-(閲覧認証&編集認証の同時設定)はOKだけど、 -w-(編集認証のみ)はいろいろと問題が発生するのと似てる。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-01-31 (日) 18:01:24
Site admin: PukiWiki Development Team

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.436 sec.

OSDN