I am building a Laravel project and the login form isn't logging me in. I changed the redirect in RouteServiceProvider, but the log in page just keeps reloading. When I register as a user it logs me in, but when I log out and try to log back in, it doesn't work.
RedirectIfAuthenitacted:
namespace App\Http\Middleware;
use App\Providers\RouteServiceProvider;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @param string|null ...$guards
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next, ...$guards)
{
$guards = empty($guards) ? [null] : $guards;
foreach ($guards as $guard) {
if (Auth::guard($guard)->check()) {
return redirect(RouteServiceProvider::HOME);
}
}
return $next($request);
}
}
LoginController:
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
}
Login View:
@extends('layouts.app')
@section('content')
<section class="login-form-container">
<div class="login-form-inner-container">
<div class="login-logo">
<img src="{{ asset('img/waveHouse-logo.svg') }}" alt="">
</div>
<form method="POST" action="{{ route('login') }}" class="login-form">
@csrf
<label for="email" class="col-md-4 col-form-label text-md-end">{{ __('Email Address') }}</label>
<input id="email" type="email">
<label for="password">{{ __('Password') }}</label>
<input id="password" type="password" name="password" required autocomplete="current-password">
<button type="submit" class="btn btn-primary">
{{ __('Login') }}
</button>
</form>
</div>
</section>
@endsection
Update:
I was missing name from the email input field. I added that in as well as error messages and that did the trick! :)