sg

[MediawikiHac][メディアウィキハック]管理者以外の挙動を制限する

目的

閲覧専用のウィキペディアを構築する

環境

Mediawiki 1.31.1

LocalSettings.phpで利用者権限の制限を定義する

オードソックスなやり方ですね。以下のサイトを参考にしてLocalSettings.phpを編集すれば良いでしょう。

Manual:利用者権限

https://www.mediawiki.org/wiki/Manual:User_rights/ja#%E6%A8%A9%E9%99%90%E3%81%AE%E4%B8%80%E8%A6%A7

変更点

以下をLocalSettings.phpに追記。ユーザーグループは、匿名ユーザ、登録ユーザ、管理者しかいないものと仮定しています。

GPermission('createaccount');
GPermission('edit');

function GPermission($item){
	$wgGroupPermissions['*'][$item] = false;
	$wgGroupPermissions['user'][$item] = false;
	$wgGroupPermissions['sysop'][$item] = true;
	return TRUE;
}

ソースを管理者以外に表示しない

何をしでかすか分からないので表示させないようにする。

EditPage.phpの以下のこのあたり

$out->addHTML( $this->editFormTextBeforeContent );
$this->showTextbox( $text, 'wpTextbox1', [ 'readonly' ] );
$out->addHTML( $this->editFormTextAfterContent );

以下に書き換え

$out->addHTML( $this->editFormTextBeforeContent );
global $wgUser;
if ( in_array('sysop', $wgUser->getGroups()) ) {
$this->showTextbox( $text, 'wpTextbox1', [ 'readonly' ] );
}
$out->addHTML( $this->editFormTextAfterContent );

動作確認ok

actionを限定する。例えばaction=purgeさせないようにする

https://www.mediawiki.org/wiki/API:Restricting_API_usage/ja

https://www.mediawiki.org/wiki/Manual:Hooks/ApiCheckCanExecute

以上を参考にして管理者以外のactionを限定する。

うまくいかない

保留

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です