Catalyst の認証系
これはちょっとなぁ。コメントしようと思ったけど途中まで書いて長くなったのでここに書いておく。
まず、Authentication::Credential::* と Authentication::Store::* はどちらも Authentication プラグインを利用する認証プラグインのための名前空間。
なので、上記プラグインは Credential とつけるのはいくない。
Authentication プラグインは Catalyst プラグインだけど、それ自体が認証プラグイン用のフレームワークみたいになっていて、ユーザー(プログラマ)はさまざまなバックエンドプラグインを共通のインタフェースで使用することができるようになっている。
んで、上記プラグイン、名前をかえればいいんじゃね。とかおもったけどよくみたらこれ、$c->login とかよんでる。
んでloginはプラグイン内になくて、トップレベルのアクションに login : Local とか書いてる。これ、MyApp.pm にlogin定義してないと動かないんじゃね。
Authentication プラグインのコードが読みにくいということも問題かなぁ。NEXT を使うMixinのプラグイン機構はそのプラグイン内にメソッドを定義しまくれない(すべて$cの関数になってしまうから)ため、複雑な処理をしようとすると別名前空間を使う必要があるので実装がむずかしい。
それプラス、作者が nothingmuch。この人のコードは基本読みにくいw
でも、Authentication プラグインをつかったはてな認証プラグインはすでにあるので、今からつくるなら Authentication プラグインを使わないもののほうがいいのかな。