環境
Laravel Framework 9.7.0
php 8.1.2
認証機能 Breeze
ユーザ登録時に認証メールを送信し、メールを確認するとUserテーブルのメール認証日時が更新されるところは確認できました。
実現したいのは、メール認証が済んでいない場合は機能を制限することです。
例えば掲示板ページであれば、メール認証が済んでいない状態では、投稿された情報は参照できるが書き込みはできないように制御したいです。
制御は書き込み欄の表示、非表示の切り替えで行う想定です。
- 未ログイン:参照可、書き込み不可
- ログイン済、メール認証未完了:参照可、書き込み不可
- ログイン済、メール認証完了:参照可、書き込み可
web.phpを ->middleware(['auth', 'verified'])と記述することで、メール認証を促す画面に遷移させることは確認できました。
ログイン時のデフォルトの遷移先はダッシュボードになっていましたが、
RouteServiceProvider.php の RouteServiceProvider::HOME を任意のページに変更することで変更しました。
メール認証が済んでいるかどうかで機能を制限したいのですが、
簡潔な対応方法はあるでしょうか?
または、自前で実装する場合、以下の方法を検討しています。
- ログイン認証時に、セッションにメール認証が済んでいるかどうかを保持(Userテーブルのemail_verified_at)
- 対象ページのビュー(index.blade.php)で、セッション値を判定して書き込み欄の表示、非表示を切替
この場合、ログイン認証時にemail_verified_atを参照したいのですが、認証処理のどこで参照すればよいかが分かりません。
認証後のセッション情報を参照したところ、"login_web_XXXXXXXXXXXXXX":4 のような値があり、
数値がどうやらUserテーブルのIDのようですが、この値から参照するような手順が必要でしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/12 14:38