日記
編集にTypeKeyログインが必要なPukiWiki (01:41)Edit

まじめに改造するのがつらいんで必要最低限のみ。まずlib/typekey.incというファイル名で、

function check_typekey() {
define('TYPEKEY_SESSION_NAME', 'TYPEKEY_SESSION_NAME');
define('TYPEKEY_TOKEN', 'TYPEKEY_TOKEN');
define('TYPEKEY_URL', 'https://www.typekey.com/t/typekey/login');
session_start();
if (!isset($_SESSION[TYPEKEY_SESSION_NAME])) {
if (isset($_GET['name'])) {
require_once("Auth/TypeKey.php");
$tk = new Auth_TypeKey(array('version' => '1.1', 'token' => TYPEKEY_TOKEN));
$tk_result = $tk->verifyTypeKey($_GET);
if (PEAR::isError($tk_result)) {
die($tk_result->getMessage());
} else {
$_SESSION[TYPEKEY_SESSION_NAME] = array(
'name' => $_GET['name'],
'nick' => $_GET['nick'],
'mail' => $_GET['email']
);
return TRUE;
}
}
} else {
return TRUE;
}
$tk_url = TYPEKEY_URL.'?&v=1.1&need_email=1&t='.TYPEKEY_TOKEN.
'&_return='.urlencode('http://'.$_SERVER['HTTP_HOST'].
$_SERVER['REQUEST_URI'].'&');
header('Location: '.$tk_url);
die;
}

 もちろんTokenの設定は自分のものに。あと、自サイトのURLもちゃんとTypeKeyサーバーで登録しておく必要がある。そしてplugin/edit.inc.phpの関数の頭に、

function plugin_edit_action()
{
require_once LIB_DIR.'typekey.inc';
check_typekey();
global $vars, $_title_edit;

 なんて感じのコードを追加。リダイレクトURLを生成しているところの、$_SERVER['HTTP_HOST']は嘘かも。要は元のURLに戻りたいんだけど、どうやるんだっけ? $_SERVER['SERVER_NAME']は取れなかったんだよな。

 ともかく上記のようにすると、編集リンクをクリックしたらTypeKeyのログイン画面に飛ぶ。ログインに成功すると元のページに戻ってきて、DSAのverifyをして、問題なければセッションにユーザー情報を保存する。以降セッションにユーザー情報が入っていればいちいちリダイレクトしない。

 ユーザー情報はその後全然使っていないけど、本当は編集した人の情報として記録した方がいいんだろう。でもPukiWikiのコードを追う気力がないんでパス。

Published At2004-10-05 00:00Updated At2004-10-05 00:00