Reputation: 162
I am using Laravel 5.2 and I am using the default login controller. I know how to redirect the user if the user logged in successfully but I don't know how to redirect him if he didn't enter the email or password correctly.
Here is the controller code
class AuthController extends Controller
{
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
protected $redirectTo = '/';
public function __construct()
{
$this->middleware($this->guestMiddleware(), ['except' => 'getLogout']);
}
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
]);
}
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
}
Where should I enter the redirect code?
Upvotes: 2
Views: 508
Reputation: 5565
@Alexey's answer modified for Laravel 5.8, add this to app\Http\Controllers\Auth\LoginController.php
:
protected function sendFailedLoginResponse(Request $request)
{
return redirect()
->route('login')
->withInput($request->only($this->username(), 'remember'))
->withErrors([
$this->username() => [trans('auth.failed')],
]);
}
Upvotes: 0
Reputation: 163748
You could override sendFailedLoginResponse()
method in AuthController.php
, like:
protected function sendFailedLoginResponse(Request $request)
{
return redirect()->route('myCustomRoute')
->withInput($request->only($this->loginUsername(), 'remember'))
->withErrors([
$this->loginUsername() => $this->getFailedLoginMessage(),
]);
}
Upvotes: 3