Laravel 10 入門トップページ


目次

  1. 全体の概要
  2. Laravel によるユーザ認証
  3. ユーザ認証を備えたコメント掲示板の開発
  4. マルチ認証の実現
    1. 概要
    2. 準備作業
    3. コントローラの作成
    4. ガードの追加
    5. モデルの作成
    6. データベースのマイグレーション
    7. シーダによる管理者・教員データの登録
    8. コントローラの生成
    9. ガードごとに認証不要のダッシュボードを作成
    10. ログイン機能実装の手順
    11. モデルを認証必須に
    12. リクエストの作成
    13. ログインコントローラの作成
    14. ルートの定義
    15. ログインフォームの作成
    16. コンポーネントの作成
    17. レイアウトの作成
    18. ナビゲーションの作成
    19. コントローラの編集
    20. ビューの作成
    21. ミドルウェアの修正
    22. ルートの定義
    23. 管理者ログインの動作確認
    24. 管理者と教員ページのデザイン変更

Laravel でユーザ認証とマルチ認証を実現する

マルチ認証の実現

コントローラの作成

現時点で一般ユーザのダッシュボード /dashboard は ルート定義の web.php から直接ビューを呼び出しています.ここでは,ダッシュボードのコントローラを作成して,コントロラーからビューを呼び出すように変更します.

まず次のコマンドで一般ユーザ用の DashboardController を生成します.ただし,この後3つのガードに分けることを考慮して,一般ユーザ用のコントローラは app/Http/Controllers ではなく app/Http/Controllers/User に設置するようにしていることに注意して下さい.

vagrant@ubuntu2204 laravelAuth $ php artisan make:controller User/DashboardController ⏎

   INFO  Controller [app/Http/Controllers/User/DashboardController.php] created successfully.

vagrant@ubuntu2204 laravelAuth $

生成されたコントローラは次の通りです.上のコマンドではコントローラの設置場所を指定しました.そのことが3行目に反映されています.

app/Http/Controllers/User/DashboardController.php
<?php

namespace App\Http\Controllers\User;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class DashboardController extends Controller
{
    //
}

コントローラに index 関数を追加して,ビューを呼び出すコードを記載します.

app/Http/Controllers/User/DashboardController.php
<?php

namespace App\Http\Controllers\User;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class DashboardController extends Controller
{
    public function index()
    {
        return view('dashboard');
    }
}

ルートの定義を変更します.これまでルートから直接ビューを呼び出していた部分(22〜24行目)を削除するかコメントアウトします.その代わりに,コントローラの index 関数を呼び出すようにします.この定義でも /dashboard にアクセスするためにはメール検証されたユーザ (verified) が,ログインした状態 (auth) であることが求められるようにしています.

routes/web.php
<?php

use App\Http\Controllers\ProfileController;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\User\DashboardController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

// Route::get('/dashboard', function () {
//     return view('dashboard');
// })->middleware(['auth', 'verified'])->name('dashboard');

Route::middleware('auth')->group(function () {
    Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
    Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
    Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
});

Route::middleware('auth', 'verified')->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
});

require __DIR__.'/auth.php';

Web サーバを再起動して動作を確認して下さい.これまでと動作に変化はなく,ログインすれば /dashboard が表示されるはずです.

vagrant@ubuntu2204 laravelAuth $ php artisan serve --host=192.168.56.101 --port=8000 ⏎

   INFO  Server running on [http://192.168.56.101:8000].

  Press Ctrl+C to stop the server

目次に戻る