* is_edit_auth() が欲しい [#s5c62ddc]

- ページ: [[BugTrack2]]
- 投稿者: [[sonots]]
- 優先順位: 低
- 状態: 提案
- カテゴリー: その他
- 投稿日: 2006-06-25 (日) 04:41:11
- バージョン: 

** メッセージ [#q4ea43a4]
凍結に対しては is_freeze がありますが、
ほぼ同等の効果のある編集制限に対しては is_edit_auth がありません。
プラグインを作成していて欲しいときがあるので、Pukiwiki API にほしいです。

 //referred lib/auth.php#basic_auth
 function is_edit_auth($page, $user = '')
 {
 	global $edit_auth, $edit_auth_pages, $auth_method_type;
 	if (! $edit_auth) {
 		return FALSE;
 	}
 	// Checked by:
 	$target_str = '';
 	if ($auth_method_type == 'pagename') {
 		$target_str = $page; // Page name
 	} else if ($auth_method_type == 'contents') {
 		$target_str = join('', get_source($page)); // Its contents
 	}
 
 	foreach($edit_auth_pages as $regexp => $users) {
 		if (preg_match($regexp, $target_str)) {
 			if ($user == '' || in_array($user, explode(',', $users))) {
 				return TRUE;
 			}
 		}
 	}
 	return FALSE;
 }

is_read_auth もあったほうがいいとは思います((1.4.7 前に言えればよかったナァ))。
--------
** check_editable()で代替可能か [#z68656b8]

- lib/auth.phpのcheck_editable, check_readableで代替可能かと思われます。 -- [[Ratbeta]] &new{2006-06-25 (日) 17:03:34};
-- いいえ、check_editable は basic_auth を表示してしまいます。 -- [[sonots]] &new{2006-06-26 (月) 16:18:53};
-- パスワードを要求するものと、要求しないものの違いです。前述の通り is_freeze のような関数となります。 -- [[sonots]] &new{2006-06-26 (月) 16:20:49};
- check_editable($page, false, false); のようにすると true/false が返ってきます。$auth_flag が basic 認証をするかどうか、$exit_flag が exit するかどうか、だと思います(( 認証に失敗した場合 (( 詳しくないので間違えていたらすみません )) ))。 -- [[0]] &new{2006-06-26 (月) 23:18:01};
-- いいえ、$auth_flag は basic 認証プロンプトを出すかどうかのフラグであり、check_editable は依然として edit_auth されていない、もしくは edit_auth されているが basic 認証が通っている場合に true を返す関数となります。そのページが edit_auth されているかの判定とは異なります((これ自体2,3ヶ月前に作った関数でどうしてその経緯に至ったのかちょっと忘れていました orz)) -- [[sonots]] &new{2006-06-27 (火) 03:54:06};

#comment


** 実装周り [#b236edd6]
- なるほど。何度も呼ばれた時を考えるともう少し軽くできるかもしれません。元のコードがこうなっている可能性を感じますが (^^; そうしたら認証機構そのものの見直しネタになりそうですね。 -- [[henoheno]] &new{2006-06-26 (月) 23:45:53};
- basic_auth を参考にして作ったものにすぎないので、一つにまとめる、や再利用などはできるとは思います。上は、私がプラグインで用いるにあたって本体の改造をするわけにはいかないので、そのときにプラグイン中で定義していた関数を持ってきたにすぎません。 -- [[sonots]] &new{2006-06-27 (火) 04:19:08};

#comment

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.013 sec.

SourceForge