-ださろぐシステム開発者からコーヒー屋への道。さんありがとうございました)。Calendar2013参加記事です。21日目は@madmamorさんのFuelPHPをRocketeerで自動デプロイしてみる。マイグレーションとPHPUnitも実行してみる。Sturgeon氏がメンテされていたNinjAuthというOAuth認証パッケージを使用して簡単にログイン認証が行えるパッケージを作成したのですが、FuelPHP1.6.1からNinjAuthに代わりOpAuthに対応したパッケージが標準で入るようになったので、今年はそちらでログイン連携を行う最小限の方法を紹介します。した作業量比較としては、インストール作業自体はNinjAuthより楽に行えますが、コントローラー、ビューのサンプルなどは付属してないので、そのあたりはまるっと書く必要があるので一手間ある感じです。動かすところまでなので、バリデーションの処理やコントローラーでのハンドリングを実際のアプリケーションで作りこむと良い感じになると思われます。環境:FuelPHP1.7.1、caomposerはインストール済、DBはセットアップ済みの想定それでは各ステップごとにいってみましょう。),packages/auth/configからopauth.phpをコピーしてきてapp/config以下に配置opauth.phpのStrategyを追加。今回はFacebookのみ。updateを実行すると必要なopauth本体とfacebookストラテジがインストールされる。--packages=authを実行すると、下記のテーブルが作成される。|+------------------------+コントローラーの作成auth用のコントローラーを作成します。コントローラー名に特に縛りはありませんが、今回はController_Authという名前で作成します。applicationのサンプルをコピペしつつ、動くように調整してみます。time(),));}}}action_oauthが起点となるアクションとなり、ここから各サービスへリダイレクトされます。コールバックはconfigで特に指定していない場合、同コントローラのaction_callbackアクションに帰ってきますので、action_callback内で処理を判定します。未登録の場合はauth/registerに飛ばしてユーザー登録を行わせ、登録が完了した時点でlink_providerでユーザーの紐付けを行うようになっています。今回はfieldsetを使っているので、単純にechoしてとりあえずフォームを出してみましょう。$form;確認してみるコントローラ、ビューまで作成して/auth/oauth/facebookにアクセスするとfacebook認証が行われ、未登録であればregisterに飛ばされます。登録を完了し、再度同じURLからアクセスするとログインとなり、セッションにログイン情報が格納されます。各OAuthプロバイダから取得したトークンなどの情報はusers_providersテーブルに格納されていますので、こちらを利用してfacebookへの登録や、twitterへの投稿などを行う処理を個別に実装出来ます。Apache)を構築するです。vol.3でLTしてきました。参加者の皆様お疲れ様でした。内容的にはAdventCalendarで発表した内容の補足として、簡易デモ、オプションの説明、その他です。興味ある人は是非使って頂いた上でイマイチなところはPR貰えるといいなあと思う所ですがまずは自分で使えって話ではあります。@koyhogeさん。DynamoDBのラッパーを公開するとかしないとか。@Tukimikageさん。セッションのセキュリティまわりは確認したいところ。FuelのAssetクラスがショボいので、という話(で合ってるかな)。@niwatakoさん。Fuelなアイコンたち。懇親会Fuelの話をがっつりというよりは色々と好き勝手に喋りましたね。syntaxとかビルトインウェブサーバいいよねとかfabienスゲーとかyamlの話とか)。Fuel関連ではエスケープはtwig側でやろーぜの話とか、oilに実行権限ついてるけど中身はphpでなんでシバンつけないんだろうの話とか、{exec_time}と{mem_usage}のstr_replaceがindex.phpにいるの地味に雑じゃね、とかまあそんな話を。次回の開催日程とかについても話していましたが、もくもく会の話なんかもあるのでこういう話をもっとしたいところですね。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の状態に関係なくログイン状態になってしまうのでそのあたりを考える小規模サービスで実際に使ってみるとりあえず動くと思いますが現状はまだ甘い実装となっているので、是非フィードバックを頂ければと思います。