FuelPHP – AdminLTEを使ってユーザ認証機能をカンタンに実装する方法

管理システムやサービスには欠かせないユーザ認証機能ですが、fuelphpではauthパッケージを使うとカンタンに実装できます。

authパッケージのsimpleauthという認証機能を使って、ログイン・ログアウト機能を爆速で作っていきましょう。

ユーザ認証機能を作成するために必要な設定

authパッケージを利用するための設定

fuel/app/cofing/config.phpalways_loadormauthを追加する

sipleauthの設定ファイルをコピー

fuel/packages/auth/configフォルダにあるauth.phpとsimpleauth.phpをfuel/app/configフォルダにコピー

ソルトの設定

auth.phpとsimpleauth.phpのソルトを設定

パスワード生成(パスワード作成)

を使うと便利です

Remember Me 機能の設定

simpleauth.phpのremember_meをtrue
fuel/app/config/crypt.php を作成する

こちらも以下を使うと便利です。

パスワード生成(パスワード作成)

users以外のデータベースを使う場合は以下のように設定

simpleauth.phpのtable_nameの値を書き換え
fuelphp simpleauthを拡張して複数テーブルでのログイン認証 | pbtimes 情報誌

データベーステーブルの作成

AuthパッケージにはSimpleAuthに必要なテーブルを作成するためのマイグレーションファイルが含まれている

oilコマンドを叩くだけで、カンタンに必要なテーブルを生成することができます

を叩く

マイグレーションファイルを叩くだけで必要なテーブルが揃う
fuelphpのコンソールを使って、管理者用のユーザを作成してみます。

1と返されたらちゃんと設定できています

ここまでで、認証機能の設定は完了です。

ログイン・ログアウト画面の作成

ちょっとかっこいい管理画面を作りたいので、一瞬だけ脱線してレイアウトを作っていきます。

AdminLTEという管理画面専用のテンプレートがあるので、今回はこれを使います。

AdminLTEの導入

Free Bootstrap Admin Template

このページからダウンロードしてください。

Zipファイルを解凍すると、たくさんファイルとフォルダが入っています。

distpluginsフォルダを、public/assetsにコピーして下さい。

これでAdminLTEのインストールは完了です。

ログイン画面をつくってみよう

AdminLTEをつかってかっこいいログイン画面を作っていきます。

fuel/app/classes/controllerbase.phpを作って下さい。

AdminLTEのCSSやJSをカンタンに呼び出すための設定をしています。

ログイン後の画面を作っていきます。

ログイン後の画面はホーム画面に当たるので、ルーティングを設定します。

fuel/app/config/routes.phpを以下のように書き換えて下さい。

このように書き換えることで、http://あなたのドメインにアクセスしたときに、Homeコントローラーのindexアクションに飛ぶように設定できます。

ルーティングの設定が終わったら、実際にログイン後の画面を作っていきます。

まずは、Homeコントローラーをfuel/app/classes/controller/home.phpをつくります。

ビューテンプレートをfuel/app/views/template.phpに作成します。

ついでに、ヘッダーもfuel/app/views/header.phpに書いちゃいましょう。

ログイン後のビューをfuel/app/views/home/index.phpに作りましょ。

とでも書いておきます。

これで、ログイン後の画面は完了です。

ローカルのドメインhttp://fuelphp.text/にアクセスしてみて下さい。

下のような画面が表示されるはずです!

ここからログイン機能を作っていきます!

fuel/app/classes/controllerに新しくlogin.phpを作ります。

次に、ビューテンプレートを作成します。

fuel/views/template_login.phpを新規作成してください。

次に、ログイン画面のビューを作成します。

fuel/views/login/index.phpを新規作成し、以下のコードを書いてみましょう。

これでログイン画面は完成です。

http://あなたのドメイン.test/loginにアクセスして、以下の画面が表示されればOKです。

今のままでは、ログインしてないユーザでもログイン後の画面にアクセスできてしまうので大問題です。

なので、fuel/app/classes/controller/home.phpを以下のように修正して下さい。

これで、ログインしていないユーザはログインページにリダイレクトされます。

実際に、http://あなたのドメイン/homeにアクセスしてみてください。

ログイン画面にリダイレクトされれば、OKです。

実はもうこれで完成です。

ログイン機能は実は先程すでにfuel/app/classes/controller/login.phpに書いてました。

コンソールでユーザを作成して、実際にログインしてみましょう。

まず、ターミナルで以下のコマンドを叩いてコンソールを起動し、create_userメソッドを叩いて下さい。

これで、ユーザの作成は完了です。

作成したユーザで実際にログインしてみましょう。

ログイン後の画面が表示されれば完成です!

次に、ログアウト機能を実装してみましょう。

fuel/app/classes/controller/logout.phpを作成し、以下のコードを書いて下さい。

これでログアウト機能は実装完了です。

では、実際に、ちゃんと動くか確かめてみましょう。

今現在は、ログイン状態なので、http://あなたのドメイン/loginにアクセスしても、必ずホーム画面http://あなたのドメイン/homeにリダイレクトされるはずです。

ホーム画面の右上に、〇〇さんと書かれているはずなので、そこをクリックするとログアウトボタンがあるはずです。

このログアウトボタンを押してみて下さい。

ログイン画面にまた戻れば、完成です。

確認として、http://あなたのドメイン/homeにアクセスしてみて下さい。

ログインしていないので遷移できず、ログイン画面にリダイレクトされるはずです。

これで、ログイン・ログアウト機能の完成です!

Gitにコミットしてプッシュ

最後に、いつもどおりコミットとプッシュを忘れずに

まとめ

ちょっと長くなってしまいましたが、AdminLTEを使ってログイン・ログアウト機能をFuelPHPで実装する方法でした!


もしよければ応援クリックお願いします
↓↓↓↓↓
にほんブログ村 IT技術ブログ IT技術メモへ