Laravel 5.8 でMulti-Auth

WEBシステム開発では多くの場合、一般ユーザと管理者の編集者が必要となるので
前回のUSERログインとは別にADMINログインを追加してみましょう。
管理者の登録やパスワードリセットは不要とします。

開発環境

Laradock
Laravel 5.8
MySQL 5.7

config/auth.phpの設定

config/auth.php

adminsテーブル作成

【マイグレーションファイル作成】

【マイグレーションファイル編集】

database/migrations/xxxxxx_create_users_table.phpを参考に作成する。

database/migrations/xxxxxx_create_admins_table.php

【マイグレーション】

【Adminモデル作成】

【Adminモデル編集】

app/Models/Admin.php

認証エラー時の対応

app/Exceptions/Handler.phpに未ログイン時の対応(unauthenticated)を設定。
Illuminate\Auth\AuthenticationExceptionを継承しているのでunauthenticatedメソッドをオーバーライド。

app/Exceptions/Handler.php

ルーティング設定

routes/web.php

コントローラーの作成

【ディレクトリ構成】

【Adminディレクトリ作成】

【Admin/HomeController.php作成】

※app/Http/Controllers/HomeController.phpをコピーして編集。

app/Http/Controllers/Admin/HomeController.php

【Admin/LoginController.php作成】

app/Http/Controllers/Auth/LoginController.phpをコピーして編集。
※Adminだけログアウトする

app/Http/Controllers/Admin/LoginController.php

【Auth/LoginController.php修正】

※Userだけログアウト

app/Http/Controllers/Auth/LoginController.php

【User側HomeController.php修正】

※Userだけログアウト

app/Http/Controllers/HomeController.php

ビュー作成

【レイアウト作成】

※resources/views/layouts/app.blade.phpをコピーしてresources/views/layouts/admin.blade.phpを作成

route変更
route(‘login’) -> route(‘admin.login’)
route(‘logout’) -> route(‘admin.logout’)

登録等の不要コード削除

【admin/home.blade.php】

resources/views/adminディレクトリを作成。
resources/views/home.blade.phpをコピーしてresources/views/admin/home.blade.phpを作成

継承元変更
@extends(‘layouts.app’) -> @extends(‘layouts.admin’)

【admin/login.blade.php】

resources/views/auth/login.blade.phpをコピーしてresources/views/admin/login.blade.phpを作成

継承元変更
@extends(‘layouts.app’) -> @extends(‘layouts.admin’)
route変更
route(‘login’) -> route(‘admin.login’)

Forgot Your Password?等不要コード削除

補足:adminsテーブルにデータ投入

補足:同時に連続ログイン

419 Page Expired

が発生するがcsrf対策のtokenが同じだからしょうがないか・・・

補足:ログイン情報取得

シェアする

  • このエントリーをはてなブックマークに追加

フォローする