laravel5.1でlaravel マルチ認証(一般ユーザと管理者ユーザで挙動を変更する)の実装について(5.2では実装済)

laravel5.1でlaravel マルチ認証(一般ユーザと管理者ユーザで挙動を変更する)の実装について(5.2では実装済)


手順リスト
1, 管理者ユーザテーブルを生成
2, administratorsテーブル定義
3, administratorモデルを生成する(App/Administrator.phpが生成)
4, 管理者ユーザをSeederで生成しておく(INSERTデータ)
5, 認証IDを変更するためのApp/AdminUser.phpを追加する。
6, カスタム認証ドライバ(プロバイダ)を生成(admin用)
7, laravelにサービスプロバイダを登録する
8, 実際にログイン・ログアウトしてみる。
9, カスタム認証ドライバ(プロバイダ)をミドルウェア化する
10, routes.phpでgroupとして/admin以下は、管理者しかアクセスできないようにする。

面倒臭いな~。LTS5.1の段階でマルチ認証しておいて欲しかったわ~。

参考URL
http://qiita.com/zaburo/items/5536bff2435b55c758f9

1, 管理者ユーザテーブルを生成
php artisan make:migration create_administrators_table –table=administrators


2, administratorsテーブル定義

usersテーブルには無いadministrators_idカラムがあるが、これは識別IDがusersと重なると
usersテーブルでid=1のレコードが認証後は
administratorsテーブルでid=1のレコードは認証済である!!とlaravelに認識されてしまう…。
逆も然りなので、idのプレフィックスとしてadmin_という文字列を連結して、laravelが認識できるようにする。

※1, 標準のログインIDは、emailなのでusernameに変更する。
※2, 権限用のロールも追加しておく

laravel5.1のユーザ認証のIDをemailカラムからusernameカラムに変更する方法

3, administratorモデルを生成する(App/Administrator.phpが生成)
php artisan make:model Administrator

User.phpのテーブル名を変更しただけ!

4, 管理者ユーザをSeederで生成しておく(INSERTデータ)
database/seeds/DatabaseSeeder.phpを修正


5, 認証IDを変更するためのApp/AdminUser.phpを追加する。


6, カスタム認証ドライバ(プロバイダ)を生成(admin用)

php artisan make:provider AdministratorProvider

app/Providers/AdministratorProvider.phpが生成される (Illuminate/Auth/DatabaseUserProvider.phpからコピペ&修正を行う)
基本的には、認証IDをadministrator_idに変更しているだけ!

プロバイダのメソッドは、微妙に分かりづらい…。
register(laravel起動時に読み込まれる)
boot(全プロバイダが読み込まれた後に実行される。authとか使える状態になっている)

7, laravelにサービスプロバイダを登録する
config/app.phpに追加するだけ。

8, 実際にログイン・ログアウトしてみる。
app/Http/route.phpに追加

10, routes.phpでgroupとして/admin以下は、管理者しかアクセスできないようにする。
ミドルウェア化しておくと、こうやってグループ化できるので便利!