質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

2回答

1401閲覧

Laravel8x の認証のカスタマイズ

osamuya

総合スコア241

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2021/08/05 17:35

https://readouble.com/laravel/8.x/ja/authentication.html
こちらのドキュメントを参考にしてLaravelの認証機能のカスタマイズをしています。
EmailとPasswordの他にUsersテーブルにstatusを追加してstatusが1だったときに認証するようなカスタマイズをしています。
app/app/Http/Controllers/Auth/LoginController.php
にコントローラを追加して、

<?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class LoginController extends Controller { /** * 認証の試行を処理 * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function authenticate(Request $request) { var_dump($request); $credentials = $request->validate([ 'email' => ['required', 'email'], 'password' => ['required'], ]); if (Auth::attempt(['email' => $email, 'password' => $password, 'status' => 1])) { $request->session()->regenerate(); return redirect()->intended('dashboard'); } return back()->withErrors([ 'email' => 'The provided credentials do not match our records.', ]); } }

を追加しました。テーブルやテーブルの値には問題ありません。
こちらはAuthのファサードをオーバーライドしてくれると思ったのですが、認証時にスルーされているようでした。
こちらのコントローラを読み込ます上で何か他に手続きがあるのでしょうか。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

下記は消した感じですか?
web.php

Auth::routes();
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');

投稿2021/08/13 14:14

uhoenginia

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

php

1<?php 2 3namespace App\Http\Controllers\Auth; 4 5use App\Http\Controllers\Controller; 6use Illuminate\Http\Request; 7use Illuminate\Support\Facades\Auth; 8use Illuminate\Support\Facades\DB; 9 10class LoginController extends Controller 11{ 12 13/** 14 * 認証の試行を処理 15 * 16 * @param \Illuminate\Http\Request $request 17 * @return \Illuminate\Http\Response 18 */ 19 public function authenticate(Request $request) 20 21 { 22 23 //DBからステータスを取得 24 $status = DB::table('users')->where('staut', 1)->where('email', $request->email)->->value('staut'); 25 26 $credentials = $request->validate([ 27 'email' => ['required', 'email'], 28 'password' => ['required'], 29 ]); 30 //ステータスが1なら通過 31 if($status === 1){ 32 33 if (Auth::attempt($request)) { 34 $request->session()->regenerate(); 35 36 return redirect()->intended('dashboard'); 37 } 38 } 39 40 //上記スルーならマッチングエラー 41 return back()->withErrors([ 42 'email' => 'The provided credentials do not match our records.', 43 ]); 44 } 45}

投稿2021/08/13 09:50

編集2021/08/13 09:59
uhoenginia

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

osamuya

2021/08/13 12:28

ありがとうございます。 Classのコード的には何とかなる感じなんですが、マニュアルなどで紹介されている。 ``` php artisan make:controller Auth\LoginController ``` で作成する`app/Http/Controllers/Auth/LoginController.php`これ自体がログイン時にスルーされているんです。ここを全然見ていないので、適当に書いてもデフォルトの機能でログインできてしまうというのが今の問題点です。
uhoenginia

2021/08/13 12:31

statusがない場合でも、スルーされてしまう感じですか?
osamuya

2021/08/13 14:12

はい、コントローラごと全くスルーしている感じです。
uhoenginia

2021/08/13 14:15

下記は消しましたか? web.php Auth::routes(); Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
osamuya

2021/08/13 14:33

まだいろいろな情報を集めている最中ですが、Jetstreemでは、これが機能しないとかそういうことのような気がしてきました。もうちょっと調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問