Ark::Plugin::Authentication::Store::DBIx::Skinny書いたよ
ArkのDBIx::Skinny用認証プラグインをgithubに上げました。Ark本体をforkしてpull request上げた方がいいかなとも思ったけど、ひとまず単体で。
DBIx::Skinnyはgithubの最新版(昨日pushしたばかり)を入れないとテストが通らないので注意。
では、簡単に使い方を。DBIx::SkinnyをMyApp::Skinnyでsetupしている場合、
package MyApp::Model::Skinny; use Ark 'Model::Adaptor'; __PACKAGE__->config( class => 'MyApp::Skinny', );
のように、ArkのModelを作成。ark.pl model Skinny Model::Adaptorとかで作るとよろし。
MyApp.pmのuse_pluginsに追加。
use_plugins qw/ ... Authentication::Store::DBIx::Skinny /;
これでDBIx::Skinnyを使った認証が出来るようになります。
あとは必要に応じてconfigを書けばOK。デフォルトではMyApp.pmで
__PACKAGE__->config( 'Plugin::Authentication::Store::DBIx::Skinny' => { model => 'Skinny', table => 'users', user_field => 'name', } );
したのと同じになります。
ついでに、Arkのパスワード認証について。デフォルトではパスワードは平文として扱われますが、configに
'Plugin::Authentication::Credential::Password' => { password_type => 'hashed', },
を設定することで暗号化したパスワードやハッシュ値による認証が可能です。
Arkではパスワードをどのように扱うかはModelに委譲しますので、例えばSHA-1を使う場合は
package MyApp::Model::Digest; use Ark 'Model::Adaptor'; __PACKAGE__->config( class => 'Digest::SHA1', ); 1;
のようなModelを作ってやる必要があります。多少面倒に感じるかも知れませんが、柔軟性があるし、見通しもかえっていいですね。