前提・実現したいこと
新規登録機能と、ログイン機能を作成しています。
新規登録はうまく行ったのですが、登録したユーザでログインができません。
新規登録したユーザはDBにきちんと反映はされています。
いろんなサイトや動画を見てはいるのですが、原因がわからず質問に至りました。
発生している問題・エラーメッセージ
エラーメッセージはありません。
該当のソースコード web.php
php
1Route::group(['middleware' => ['guest']], function() { 2 //ログインフォーム表示 3 Route::get('/', [AuthController::class, 'showLogin'])->name('showLogin'); 4 //ログイン処理 5 Route::post('/login', [AuthController::class, 'login'])->name('login'); 6 //新規登録フォーム表示 7 Route::get('/registerForm', [AuthController::class, 'showRegister'])->name('showRegister'); 8 //新規登録処理 9 Route::post('/register', [AuthController::class, 'register'])->name('register'); 10}); 11 12 13Route::group(['middleware' => ['auth']], function() { 14 //ログアウト 15 Route::post('logout',[AuthController::class,'logout'])->name('logout'); 16 //ログイン後ホーム(商品一覧検索画面) 17 Route::get('/home', [HomeController::class, 'showHome'])->name('home'); 18 19}); 20
該当のソースコード AuthController.php
php
1namespace App\Http\Controllers\Auth; 2 3use Illuminate\Support\Facades\Auth; 4use App\Http\Controllers\Controller; 5use App\Http\Controllers\Session; 6use Illuminate\Support\Facades\DB; 7use Illuminate\Http\Request; 8use Illuminate\Validation\Rule; 9use Illuminate\Support\Facades\Hash; 10use App\Http\Requests\UserRequest; 11use App\Http\Requests\RegisterRequest; 12use App\Models\User; 13 14class AuthController extends Controller 15{ 16 /** 17 * ログイン画面表示 18 * @return View 19 */ 20 public function showLogin() { 21 return view('loginForm'); 22 } 23 24 /** 25 * ログイン処理 26 * @param App\Http\Requests\UserRequest 27 * $request 28 */ 29 public function login(UserRequest $request) { 30 $credentials = $request->only('email', 'password'); 31 if (Auth::attempt($credentials)) { 32 $request->session()->regenerate(); 33 return redirect()->route('home')->with('msg_success', 'ログイン成功しました'); 34 } 35 \Session::flash('msg_error', 'ログイン失敗しました'); 36 return back()->withErrors([ 37 'msg_error' => 'メールアドレスかパスワードが間違っています', 38 ]); 39 } 40 41 /** 42 * ログアウト処理 43 * @param \Illuminate\Http\Request 44 * $request 45 * @return \Illuminate\Http\Response 46 */ 47 public function logout (Request $request) { 48 Auth::logout(); 49 $request->session()->invalidate(); 50 $request->session()->regenerateToken(); 51 return redirect()->route('showLogin')->with('msg_success', 'ログアウトしました'); 52 } 53 54 /** 55 * 新規登録画面表示 56 * @return View 57 */ 58 public function showRegister() { 59 return view('registerForm'); 60 } 61 62 /** 63 * 新規登録処理 64 * @param App\Http\Requests\UserRequest 65 * $request 66 */ 67 public function register(registerRequest $request) { 68 \DB::beginTransaction(); 69 $users = User::all(); 70 $user = new User; 71 //メールアドレスが重複しないか 72 $request->validate([ 73 'email' => [Rule::unique('users')->ignore($user->id)], 74 ]); 75 76 //新規登録 77 try { 78 //Usersテーブルに作成 79 $inputs = [ 80 $user->user_name = $request->user_name, 81 $user->email = $request->email, 82 $user->password = $request->password => Hash::make($request->newPassword), 83 ]; 84 85 $user->fill($inputs)->save(); 86 \DB::commit(); 87 \Session::flash('msg_success', 'ユーザ登録に成功しました'); 88 } catch (\Throwable $e){ 89 \DB::rollback(); 90 abort(500); 91 \Session::flash('msg_error', 'ユーザ登録に失敗しました'); 92 return redirect(route('showRegister')); 93 } 94 return redirect(route('showLogin')); 95 } 96 97 98} 99
試したソースコード Auth Controller.php
php
1 2 3 /** 4 * ログイン処理 5 * @param App\Http\Requests\UserRequest 6 * $request 7 */ 8 public function login(UserRequest $request) { 9 10 11 $email = $request->email; 12 $users = DB::table('users')->select('password')->where('email',$email)->get(); 13 $hash_password = $users; 14 $pass = $request->password; 15 16 if(Hash::check($pass,$hash_password)) { 17 //一致 18 \Session::flash('msg_success', 'ログイン成功しました'); 19 return redirect()->route('home'); 20 } else { 21 //一致しなかった時 22 \Session::flash('msg_error', 'ログイン失敗しました'); 23 return back()->withErrors([ 24 'msg_error' => 'メールアドレスかパスワードが間違っています', 25 ]); 26}
現状として、seederで作成したユーザだとログインができます。
しかし、このrouteを経て新規作成したユーザだとログインができない問題にぶち当たっています。
補足情報(FW/ツールのバージョンなど)
laravel 8.52.0
PHP My Admin
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。