MediaWikiとWordPressのアカウント(ログイン情報)を同期
MediaWikiとWordpressのユーザー情報をシンクロさせる拡張機能。
詳しくは
New MediaWiki Extension: WPMU Single Sign-on
WPMW - CiaransWiki
MediaWikiとWordPressのアカウントを同期する - 何かしら図書館
を参照。
WordPress 2.9.2
MediaWiki 1.15.2
で正常に動作している。
何ができるか
- WordPressアカウントが既にあれば、そのアカウントでMediaWikiにログインできる。MediaWikiに該当するアカウントがなければ、その都度作成される。
- MediaWikiでアカウントを作成したら、WordPressにもアカウントが作成される。WordPressで作成されたアカウントの権限は"購読者"になる。
- WordPressにログインしたら、MediaWikiにも自動的にログインされる。MediaWikiにログインしたら、自動的にWordPressにログインされる。
- MediaWikiでメールアドレスや氏名を変更したら、WordPressのアカウント情報も反映される。
- WordPressでメールアドレスや氏名を変更したら、MediaWikiのアカウント情報は次回ログイン時に反映される。
ダウンロード
まずはこちらのMediaWiki用エクステンションをダウンロード。
Download the WPMu Single Sign-on package here. (zip file)
ダウンロードしたものをextensionsフォルダにアップロード。
/extensions
∟/AuthWP/AuthWP.php
∟/Lockdown/Lockdown.php
∟/LogoutLoginWP/LogoutLoginWP.php
セッティング
エクステンションを有効化するためにLocalSettings.phpに以下を追加
-
require_once( $IP.'/extensions/Lockdown/Lockdown.php');
-
$wgSpecialPageLockdown['Preferences'] = array('');
-
require_once('extensions/AuthWP/AuthWP.php');
-
$wgAuth = new AuthWP();
-
require_once($IP.'/extensions/LogoutLoginWP/LogoutLoginWP.php');
さらに.htaccessに以下を追加
-
RewriteCond %{QUERY_STRING} ^action=logout.*$
-
RewriteCond %{REQUEST_URI} wp-login.php$
-
RewriteRule ^.*$ wiki/index.php?title=Special:UserLogout [QSA,L]
修正
AuthWP.phpは、WordPressがインストールされたディレクトリに/wikiというディレクトリを作り、そこにMediaWikiをインストールしていることを想定している。
前提が異なる場合、つまり違うディレクトリにそれぞれインストールしてある場合、AuthWP.phpを開いて$WP_relpath=にWordPressがあるディレクトリを指定すると使えるようになる。
MediaWikiのアカウントは先頭が大文字になってしまうので、厳密にはWordpressと同一にはならない。ダウンロードしたAuthWP.phpではその変換がなされていないようなので、Wordpressのアカウントの先頭を大文字にして取得するように編集。
具体的にはIDをとっている部分
-
$id=User::idFromName($wpuser->user_login);
を
-
$id=User::idFromName(ucfirst($wpuser->user_login));
に変更。以上で双方の同期が行われるようになる。
ツイート
