Laravel5.2 認証処理

便利なことにLaravel5.2には認証処理がフレームワーク側にある。
先人たちのブログや公式サイトなど眺めてみたものの、ちょっと物足りない…
例えば、ログイン後のリダイレクト先やら、パスワードリセットのメールの内容やら…
セッションが無くなった時にリダイレクト先もなかったかな。

結構疲れた。それはどうでもいい。
ざっと端折りながら書いていく。

クライアント環境:Windows10 XAMPP(PHP7.0.4) Eclipse 4.5.2(Mars) Laravel5.2.33

サーバ環境:CentOS7 MariaDB5.5.47

公式(https://laravel.com/

はじめに

業務システムでは、一般権限のユーザと管理権限のユーザでパスで変えることはよくあると思う。例えば以下の様な感じ。

・一般側
ログイン:http://localhost/login
TOP:http://localhost/top

・管理側
ログイン:http://localhost/admin/login
TOP:http://localhost/admin/top

コマンドプロンプトで、以下を実行すると認証に必要なモジュール一式がインストールされる。注意しないといけないのは、今作ってるところに実行すると上書きされるファイルもあるので要注意!(私は「/resources/views/layouts/app.blade.php」が上書きされて、SVNで元に戻せましたが気をつけましょう。)

routes

まずは、ルーティング。

これを追加するだけで、8つのルートが出来上がる。

※コマンドプロンプトで「php artisan route:list」を実行すると上記が表示される。

「register」ってルートはユーザ登録だと思うがこれは端折る。だって業務システムだと、一般ユーザの登録は管理者が行うから。

それで、ルートを以下の様な感じで修正する。

そうすると以下のようにルートが出来上がる。

Middlewareにguestってあるのが認証が不要なページ、authってのが認証が必要なページとなる。:(コロン)の後にあるadmin(管理者)とgeneral(一般)については別途。

auth.php

管理者は別テーブルならproviderを変えてあげればOKかと。

Middleware

$guardにはルートで設定したadminとかgeneralが渡ってくるとか書いてあるわけですよ。でも渡ってこないんですよ。何故か。なので、ログイン完了成功してもまたログイン画面に戻ると。。。でAuth::guard(null)に変更してみたら何とかなったのでそんな感じに変更。
さらに、

も$guardで渡ってきたものも追加してリダイレクトする。

ログインが成功した時のリダイレクト先。これもリダイレクト先に$guardを付けてあげる。

Controller

protected $redirectTo = ‘/home’;
ってプロパティでもいいらしいが、動的に変えたかったのでコントラクタで指定する。
request(‘appCode’)はどっかのミドルウェアでurlのプレフィックスを取得している。

 

作ったあとなので記載に漏れがあるかもだけど、こんな感じでなんとか行けたと思う。
もう疲れたので、この辺で注意事項を書いとこ。

その他

あと、パスワードリマインダのメール本文はこのファイル。
/resources/views/auth/emails/password.blade.php
件名はどこやねん!って思ったら、これ。

認証時のエラーメッセージはこのファイル
/resources/lang/ja/auth.php

パスワードリマインダのエラーメッセージはこのファイル
/resources/lang/ja/passwords.php

メール送信は.envが使われず、/config/mail.phpが使われる。どっちかに統一せーや!!!

 

今回は9,000文字強。。。なかなかの大作。はしょったけど。笑