どうにかなるものです。
NanoAのデータベースハンドルを使えればよかったのだが、生憎とそんな機能はついていなかった。
NanoAのconfigを使えば、NanoA本体に影響を及ぼさずにデータベースハンドルを入れ替えることが可能でした。
アプリケーション(今の場合はLightBBS)用のdbメソッドを作ることによって、NanoA::Config::db
を上書きしています。
こっちはなんとかできたのですが、 Crypt::SaltedHash
を利用するのはちょっと難しそうです。
Authen::Users
でnewした後に、プロパティを入れ替えればいけそうな気がしたのですが、認証の仕組みが違うので単純には行きませんでした。
Authen::Users
はデータベースから取ってきたsha変換済みのパスワードと、入力したパスワードをsha変換したモノとを比較しています。
そこまでがセットになっているのです。
しかし、 Crypt::SaltedHash
は、普通に変換するとsaltを自動的に入れてしまうので、単純に比較しても合わないのです。(元々それが特徴なわけですが)
比較するときは、変換済みのパスワードと入力したパスワードを Crypt::SaltedHash
のvalidateメソッドに渡してやる必要があります。
すると、内部でsaltを解析して照合ができるようになります。
まあ、仕組みはわかりましたが。
さて、どうしたもんでしょう。