FuelPHPを利用してログイン処理を実装する1

ImplementingtheLoginFormwithFuelPHP1

ルート設定

デフォルトで、FuelPHPは、fuel/app/view/welcome/index.phpを表示します。 localhost/~codex/にアクセスしたときに、表示される画面がそれです。

今回の場合、ここをfrontページにします。 そして、localhost/~codex/login/にアクセスすると、loginページが表示されるようにしましょう。

routes.phpを修正する

デフォルトでwelcome/index.phpが表示されていますので、loginの時のルートを追加します。fuel/app/config/routes.phpを修正します。

ログインページ用index.phpを作成する

fuel/app/views/welcome/login/index.phpを作成します。

どちらにしても、後で上書きするので、内容はなんでもよいです。

.htaccessを修正する

ここで、loginというディレクトリをこれから作ります。

そこにSencha Ext JSのコードを配置するからです。しかし、初期状態では、上記の設定で上手く動いてくれません。public_html/.htaccess を以下の様に修正します。

基本的にFuelPHPは、存在しないファイル、存在しないディレクトリの場合処理が走りますが、loginという実在するディレクトリ(まだ作ってないですけど)があると処理が走りません。

上記のように、存在するディレクトリの場合も実行されるように1行コメントアウトします。

ユーザーディレクトリで動かす場合

ユーザーディレクトリで動作させる場合は、以下の様にRewriteBaseの書き換えを忘れないようにしてください。

コントローラーを修正する

fuel/app/classes/controller/welcome.php を次のように修正します。

action_loginメソッドを追加して、先ほど作成したindex.phpを表示するように追加します。 http://localhost/~codex/ にアクセスすると、fuel/app/views/welcome/index.phpが、http://localhost/~codex/login/にアクセスすると、fuel/app/views/welcome/login/index.phpが表示されるはずです。

Antの設定で自動的にビューを配置する

前回、ログインフォームを実際にSencha Ext JSで作成しました。その前に、FuelPHPの開発環境の設置をしました。まだ、Sencha Cmdのウェブサーバーで確認はできましたが、FuelPHP経由で作ったアプリケーションを表示していません。

ここでは、Sencha Cmdでビルドしたアプリケーションを自動的にFuelPHPのビューとして配置するための設定を行います。 front/loginと2つのページを作成しました、このbuild.xmlは、Sencha Cmdが内部で利用しているAntの設定です。ビルドを行った後、前などに任意の処理を設定することができます。

login用のbuild.xmlにビルド処理を追加する

-before-page-after-pageを設定したtargetタグを設置します。ここの書き方はAntの書き方に従います。

ページのビルドを開始する前に、ディレクトリとファイルを削除します。そして、ページのビルドが終わった後に、loginページのビルド後のソースをpublic_html下に配置します。

front用のbuild.xmlにビルド処理を追加する

front用にも同様に追加します。ちょっと処理が多くなっていますが、loginの場合は丸ごとディレクトリを消して配置できるのですが、FuelPHPのindex.phpが配置されているディレクトリになるので、ファイル個別に削除しています。

ビルドしてみる

front/login それぞれのディレクトリに移動して、以下のコマンドを実行します。

ビルド後、localhost/~codex/とlocalhost/~codex/loginにアクセスしてみましょう。Sencha Ext JSで作成したアプリケーションが表示されます。

OrmAuthを導入する

ここで、FuelPHP の OrmAuthを導入します。OrmAuthってなに?ってなりますよね。ちょっと説明します。

FuelPHPで、ユーザーの認証処理を行うauthパッケージというのがあります、この中に、SimpleAuth(ファイルベースでユーザーを管理するもの)とOrmAuthというデータベースを利用したユーザー管理パッケージがあります。 ログイン処理のサーバーサイドは、このOrmAuthを使って行きます。

always_loadの設定

OrmAuthを使うために、まず、fuel/app/config/config.phpを編集します。

always_loadの項目は、初期状態でコメントアウトされていますので、コメントアウトを解除します。そして、‘auth’を追加します。

データベース接続設定

OrmAuthは、前述の通りデータベースを使います。FuelPHPのデータベースの設定を行いましょう。fuel/app/config/development/db.php に設定を記述します。

環境に合わせて書き換えてください。

今回は、development/db.phpのみ修正しましたが、FuelPHPには動作環境変数で、この設定を切り替える機能があります。開発環境の設定と本番環境の設定を記述しておいて切り替えることができるんですね、便利ですね。

を、FuelPHPのプロジェクトディレクトリで実行することで、以下の様に動作モードを確認できます。

authパッケージの設定ファイルを配置する

authパッケージの設定ファイルを配置します。

fuel/packages/auth/config/auth.php に有るファイルを、fuel/app/config/auth.phpとしてコピーします。

以下の様に、修正します。

put_your_salt_hereの部分は、ランダムな任意の文字列を設定してください。

マイグレーション

FuelPHPプロジェクトディレクトリに移動し、以下のコマンドを実行します。

OrmAuthを利用するために必要なデータベーステーブルを一括で作成してくれます。

初期データ挿入タスクを作る

FuelPHPには、CLIで実行するためのタスクという機能があります。このタスクを生成することが以下のコマンドでできます。

fuel/app/tasks/setuptables.php が作成されています。

indexメソッドの内容を次のように記述します。

FuelPHPプロジェクトディレクトリに移動し、以下のコマンドを実行します。

データベースを確認しましょう、codeというユーザーが作成されているはずです。

認証チェック処理を実装する

最後に、frontにアクセスしたときに、認証チェックをしてloginに飛ばす処理を記述します。

fuel/app/classes/welcome.phpを以下のように修正します。

一発作成コマンド

いつものように、ここまでの流れを以下のコマンド一発で作成します。 データベースは、codexデータベースが作成済みで、root、パスなしの条件で実行してください。

おわりに

FuelPHPのOrmAuthを導入して、ログイン画面に飛ばすところまで実装しました。FuelPHPのルートや、OrmAuth、タスクなど1つずつ掘り下げるだけで、それなりの内容になるので、大分端折りましたが、みなさん手元で動作させることはできたでしょうか。

次回は、このOrmAuthとSencha Ext JSのログインフォームを連動して、認証処理の実装を行います。

FuelPHPを利用してログイン処理を実装する1