閲覧権限のないMenuBarが表示される.


メッセージ

閲覧権限のないページを見ると,対象となるページの閲覧は制限されますが,それに付随する MenuBar は閲覧権限がなくても表示されて,閲覧できてしまいます.

define('MENU_ENABLE_SUBMENU', TRUE);

とすることで,ディレクトリごとに MenuBar を変更して,ディレクトリごとに閲覧制限をかけて,権限によってメニューを変えています. しかし,上記の問題があって,意図したことが実現できません.

menu.inc.phpプラグインを修正すれば対処できるのではと思い

--- menu.inc.php.orig	2006-04-20 22:23:58.000000000 +0900
+++ menu.inc.php	2006-04-22 00:35:19.000000000 +0900
@@ -47,6 +47,8 @@

		if (! is_page($page)) {
			return '';
+		} else if (!check_readable($page, false, false)) {
+			return '';
		} else if ($vars['page'] == $page) {
			return '<!-- #menu(): You already view ' . htmlspecialchars($page) . ' -->';
		} else {

のように check_readable 関数を加えてみましたが,

Headers already sent at [サイトのルート]/lib/html.php line 496.

のエラーで止まってしまいました. PHPも,PukiWikiの構造も知らないので,私の力量ではここでお手上げになってしまいました.

修正内容

認証中失敗時にはページを表示しないように cmd を変更する.(Thanks teanan さん)

パッチ

lib/auth.php

--- auth.php.orig	2006-04-22 10:33:22.000000000 +0900
+++ auth.php	2006-04-22 12:51:40.000000000 +0900
@@ -168,7 +168,7 @@
// Basic authentication
function basic_auth($page, $auth_flag, $exit_flag, $auth_pages, $title_cannot)
{
-	global $auth_method_type, $auth_users, $_msg_auth;
+	global $auth_method_type, $auth_users, $_msg_auth, $vars;

	// Checked by:
	$target_str = '';
@@ -216,6 +216,7 @@
			$body = $title = str_replace('$1',
				htmlspecialchars(strip_bracket($page)), $title_cannot);
			$page = str_replace('$1', make_search($page), $title_cannot);
+			$vars['cmd'] = 'auth_error';
			catbody($title, $page, $body);
			exit;
		}

関連


コメント



トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-04-23 (日) 11:33:26
Site admin: PukiWiki Development Team

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

SourceForge