-ださろぐシステム開発者からコーヒー屋への道。Calendar2012参加記事です。昨日は@fushiroyamaさんのFuelPHPで保守性の高いマルチデバイス対応を考えるでした。Fuelはコアクラスを拡張してアレコレするのがやりやすいですね。10日担当の私(@EGMC)は自作の認証パッケージの紹介です。vol.2でOAuthログインの発表をしてきた」の続きでもあります。最近のWebサービスにおいてよくみかける「facebookでログイン」、「Twitterでログイン」のような外部サービスを利用したログインの仕組みがあります。FuelPHPで利用可能なパッケージとしてNinjAuthがありますが、NinjAuthは標準でSimpleAuth、Sentry、Wardenの各ユーザー認証パッケージと連携可能となっています。標準のSimpleAuthなどをそのまま使っても良いのですが、基本的にどの実装もemail、パスワード項目が必須となっています。ログイン方法がわからなくなった場合の対応や、ユーザーへの連絡のためにemail、パスワードを設定必須にするというのはサービスによっては大事なことですが、自分が作りたいちょっとした小物webサービスにとってはそもそもアイパス認証なくてもいいかな、ということも多く、かつユーザーテーブルもカスタマイズしたかったので自前で専用の認証パッケージをこさえてみました。DsAuthhttps://github.com/egmc/fuel-dsauthNinjAuthに完全に依存した、IDパスワードによるログイン機能を持たないユーザー認証パッケージライセンスはMITで公開しています動作サンプルこちらでサンプルページを公開しています。※実際にログイン可能ですがサンプルなのでアプリは特に何もしません。必要なユーザー情報とトークンは取得しています。インストール方法githubで簡単なドキュメントを公開しています。基本的に必要なパッケージを配置してマイグレーションを実施すれば準備OKです。ポイントはNinjAuthのAdapterとしてDsAuthを指定することです。コントローラーは例えば下記のように実装して、fuel/app/classes/controller/auth.phpとして配置します。}}認証情報の取得ログインに成功するとセッションに取得したユーザー情報が保持されます。ログイン情報へのアクセスはDsAuthクラスの各静的メソッドを経由して行います。ログインユーザーレコードを配列で取得DsAuth::get_user_info()なお、DsAuthクラスはFuelのコアクラス同様グローバルにエイリアスされているので、名前空間を都度指定する必要はありません。外部サービスから取得した情報を自動で修正する今後の予定FuelPHP1.4での確認エラーチェックが甘いのでなんとかするデフォルトのcookieセッションの場合、有効なcookieがが送られるとDBの状態に関係なくログイン状態になってしまうのでそのあたりを考える小規模サービスで実際に使ってみるとりあえず動くと思いますが現状はまだ甘い実装となっているので、是非フィードバックを頂ければと思います。昨日は@EGMCさんの「FuelPHP用ソーシャルログイン専用認証パッケージDsAuthでNinjAuthをもっと簡単に利用する」でした。vol.3でLTしてきました。参加者の皆様お疲れ様でした。内容的にはAdventCalendarで発表した内容の補足として、簡易デモ、オプションの説明、その他です。興味ある人は是非使って頂いた上でイマイチなところはPR貰えるといいなあと思う所ですがまずは自分で使えって話ではあります。