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 でユーザ認証とマルチ認証を実現する

マルチ認証の実現

準備作業

マルチ認証の実現に向けて,まず,ユーザ認証の機能を実装の作業を完了させて下さい.具体的には Laravel によるユーザ認証プロジェクトの作成と初期設定 から アカウントの削除 までの作業です.

もしも Git によってバージョン管理ができており,前のページの作業までできているのであれば,新たなブランチを作成して,ユーザ認証が完成した時点までリセットすると良いでしょう.

今回は,ユーザ認証の作成が完了した時点のコミットが master ブランチにあり,コメント掲示板作成は新たなブランチ comment で作業していたとします.このような場合は,master ブランチに戻って,新たなブランチを作成します.Git のブランチ操作についてはここを参照して下さい.

ブランチの一覧を確認すると,comments と master ブランチが存在し,今 (HEAD) は comments ブランチにいることがわかります.また,コミットログを確認します.すると,master ブランチはユーザ認証が完了した時点の状態であることがわかります.

vagrant@ubuntu2204 laravelAuth $ git branch ⏎
* comments
  master
vagrant@ubuntu2204 laravelAuth $ git log --oneline ⏎
8eda07f (HEAD -> comments) navibar
82f7ef1 delete
593bc9d edit
b1e630c store
94b3cd7 memo
24c580e ページネーション
267443c show
52af255 tailwind
096ffc1 navigation
d8b4ed8 comment index view
197eeff route
2246b1f php artisan make:model Comment -c
ddf6396 seeder
a596174 migration
3bd796b php artisan make:migration create_comments_table
84378dd (master) login_id でログイン
cc95dfb login_idでログイン
3bfba89 student_id
be15b7c seed
75efb3e php artisan make:seeder UsersTableSeeder
c89654d breeze
9d2eca9 config
efcb3f3 .env
e6f9d50 initial commit
vagrant@ubuntu2204 laravelAuth $

ブランチを移動する前にデータベースのテーブルを全てロールバックしておきます.

vagrant@ubuntu2204 laravelAuth $ php artisan migrate:rollback ⏎

master ブランチに移動して,コミットログを確認します.すると,ユーザ認証の実装が完了した状態に戻りました.

vagrant@ubuntu2204 laravelAuth $ git switch master ⏎
Switched to branch 'master'
vagrant@ubuntu2204 laravelAuth $ git log --oneline ⏎
84378dd (HEAD -> master) login_id でログイン
cc95dfb login_idでログイン
3bfba89 student_id
be15b7c seed
75efb3e php artisan make:seeder UsersTableSeeder
c89654d breeze
9d2eca9 config
efcb3f3 .env
e6f9d50 initial commit
vagrant@ubuntu2204 laravelAuth $

新たな multi_auth ブランチを作成してそのブランチに移動します.

vagrant@ubuntu2204 laravelAuth $ git switch -c multi_auth ⏎
Switched to a new branch 'multi_auth'
vagrant@ubuntu2204 laravelAuth $ git branch ⏎
  comments
  master
* multi_auth
vagrant@ubuntu2204 laravelAuth $ git log --oneline ⏎
84378dd (HEAD -> multi_auth, master) login_id でログイン
cc95dfb login_idでログイン
3bfba89 student_id
be15b7c seed
75efb3e php artisan make:seeder UsersTableSeeder
c89654d breeze
9d2eca9 config
efcb3f3 .env
e6f9d50 initial commit
vagrant@ubuntu2204 laravelAuth $

ブランチを移動するとリモートサーバのファイルが変更されます.開発環境によりますが,例えば Visual Studio Code の SFTP を使ってファイルを編集しているならば,ローカルにリモートサーバのファイルを同期する必要があります.ショートカットキー Ctrl + Shift + P (mac は + shift + P)でコマンドパレットを起動します.「SFTP」と入力して検索して(あるいは,最近使用した一覧から探して),「SFTP: Sync Remote -> Local」を選んで同期します.

laravel10-2023-comment-11.png

データベースのテーブルが全てロールバックされているはずなので,テーブルを作成してテストデータを投入します.

vagrant@ubuntu2204 laravelAuth $ php artisan migrate ⏎

  Creating migration table ................................ 16ms DONE

   INFO  Running migrations.

  2014_10_12_000000_create_users_table .................... 10ms DONE
  2014_10_12_100000_create_password_reset_tokens_table ..... 5ms DONE
  2019_08_19_000000_create_failed_jobs_table .............. 11ms DONE
  2019_12_14_000001_create_personal_access_tokens_table ... 15ms DONE
  2023_11_03_101930_add_login_id_to_users_table ........... 16ms DONE

vagrant@ubuntu2204 laravelAuth $ php artisan db:seed ⏎

   INFO  Seeding database.

  Database\Seeders\UsersTableSeeder ......................... RUNNING
  Database\Seeders\UsersTableSeeder .................. 665.27 ms DONE

vagrant@ubuntu2204 laravelAuth $

もしもロールバックやマイグレーションに失敗するなら,データベースのファイルを一旦削除しても構いません.その後,上のコマンドを再度実行して下さい.

vagrant@ubuntu2204 laravelAuth $ rm database/database.sqlite ⏎
vagrant@ubuntu2204 laravelAuth $ touch database/database.sqlite ⏎
vagrant@ubuntu2204 laravelAuth $

これでユーザ認証ができる状態になっているはずなので,ログイン,ログアウト,ユーザの登録などが正しく動作することを確認して次のステップに進んでください.

目次に戻る