使う必要があったから調べた

OpenPNE2系でも、

http://trac.openpne.jp/wiki/pne-book-7

こんな勢いで、認証をやっていたみたいだが
問題はテーブル構造が違う。

2系の場合は、

AuthMySQLEnable on
AuthMySQLUser *****
AuthMySQLPassword **********
AuthMySQLDB #DB_NAME#
AuthMySQLNameField nickname
AuthMySQLPasswordField hashed_password
AuthMySQLUserTable "c_member, c_member_secure"
AuthMySQLUserCondition "c_member.c_member_id=c_member_secure.c_member_id"
AuthMySQLPwEncryption md5
Require valid-user

この場合、ニックネームは英数字の必要があったり
一意にしろー!! みたいな感じで告知する必要があるので若干面倒
でも、こんなにスマートにいける。(設定自体は)

3系はどうだろう。
ニックネームは memberテーブルの name
パスワードは member_configテーブルの value にmd5にハッシュ化された状態いるわけだ。
この状態だと、従来通りのやりかたではうまくいかなかったので発想を変える。

まず、 memberテーブルの name を使うのは止した方がいいだろう。
これは、一意じゃないし英数字じゃない場合があったりするので面倒だ。
重複不可のプロフィール項目をつくるなどすればいいだろう。
分かれているテーブルを使うのは面倒なので、ビュー表を使うことにする。

まず、プロフィール項目つくーる
管理画面→プロフィール項目設定 でサクっと

重複を許可しないようにしたり、正規表現で英数字限定にしたりするのがポイント

作ったらIDを確認する

びゅーひょーつくーる
mysql で OpenPNE用のDBで以下のクエリ発行

CREATE VIEW authuser AS
SELECT mp.member_id as id, mp.value as user, mc.value as password
FROM member_profile mp INNER JOIN member_config mc ON mp.member_id = mc.member_id
WHERE mp.profile_id = 5 AND mc.name = 'password';

mp.profile_id = 5 のところは、上で確認した数字にする。

これで SELECT * FROM authuser;
で プロフィールで設定したID とパスワードの組み合わせが簡単に取得できるようになる。

こうなればもうコッチのモノで

AuthMySQLEnable on
AuthMySQLUser *****
AuthMySQLPassword **********
AuthMySQLDB #DB_NAME#
AuthMySQLNameField user
AuthMySQLPasswordField password
AuthMySQLUserTable authuser
AuthMySQLPwEncryption md5
Require valid-user

とすれば、めでたくOpenPNE3中で設定した値でTracにログインできるようになる。
お試しあれ。

OpenPNE3で、jQueryのプラグインを動かしまくりたいのに画面によっては
prototype.jsがロードされてしまっているので、なかなか動かすのが大変というのが
よくありがちです。

理由は 両方共 $() が宣言されていて、しかも挙動がちがうんですよ。


これはイメージです。

jQueryにはコンフリクト回避できる方法があるらしいけど、jQueryプラグインのライセンスによっては
いじりまくることが出きないケースもあったり…。

ってなわけで、だんだんprototype.jsとjQueryに嫌気が差してきたわけです。
(もちろん、並行するようなケースがないと言い切れる場合は全く問題ない)

というわけで、自作のOpenPNE3プラグインとか、自作アプリでは Google Closure Tools
積極的に使っていこうと考えたわけです。
UIも国際化されているし、ライセンスはApache License2.0だし、コンパイラーがすげぇし。

http://github.com/arshaw/fullcalendar
fullcalendar使いたかったZe…

まぁ、$()のコンフリクト回避しつつ使うとすれば、Iframeでウヒヒするとか解決策はありそうですがね。

http://www.bucyou.net/openpne3/openpne3-3-x_dev/op3_3_dev13

更新しました。

画像をDBに保存し、それを表示する仕組みについてです。
最初は13回は、SNS内の情報を利用するためのTIPS的な回になる予定でしたが
どうもチュートリアルとしてはそういう回はもうちょっと後にやっておくべきかな?

と考え、繰り上げてみました。

そして、10の『開発を公開する』の回も最終的には大分変えて行く予定です。
なぜならば、いきなりGithubに「公開する」という話しがど〜んと出てきてしまっているからです。

プラグイン開発はオープン・クローズ限らずどんどこやって欲しいものなので、
この回はプラグインパッケージやその周辺に関わる知識中心に変えます。
(おそらくGithubで管理するという作業箇所は無くします。
 っとなると悩ましいのが11回に普通にgitを活用しまくっていること。う〜む。どうするか。)