[Laravel] 5.3でMulti-Authを使う

以下の要件を想定

  • /user以下は登録ユーザしかアクセスを許さない (要認証)
  • /admin以下は管理者しかアクセスを許さない (要認証)
  • それ以外は認証なしでアクセスできる
  • ユーザはusersテーブルで管理する
  • 管理者はadminsテーブルで管理する
  • 登録ユーザのログインは/login、ログアウトは/logout
  • 管理者のログインは/admin/login、ログアウトは/admin/logout

以下、実装手順をざっくり。

(1) 標準Authの有効化と管理者の追加

標準のAuthを有効化する

adminsテーブルを作成

とりあえずadminsテーブルの構成はusersテーブルと同じにしておく。

Adminモデルを作成

とりあえずAdminモデルの構成はUserモデルと同じにしておく。

マイグレーション実行

Authの設定

(2) 管理者ログインの仕組みを作成

実装の手間を減らすために、標準のログインの仕組みを可能な限り流用する方針で行く。

標準のログインコントローラ(app/Http/Controllers/Auth/LoginController.php)をapp/Http/Controllers/Admin/Auth/LoginController.phpへコピーして、管理者ログイン用にカスタマイズする。

標準のログインページのテンプレート(resources/views/auth/login.blade.php)をresources/views/admin/auth/login.blade.phpへコピーして、管理者ログイン用にカスタマイズする。

(3) 管理者ログインページへの転送を追加

(4) ルーティングを定義

(5) コントローラに認証要件を追加

参考サイト

Authentication – Laravel
https://laravel.com/docs/5.3/authentication