First of all, I checked out this question: Flash message after login laravel, but it does not solve my issue.
I am trying to generate session flash message after successful login, by overriding authenticated
method of AuthenticatesUsers
Trait like the following:
// in LoginController
...
use Illuminate\Http\Request;
protected function authenticated(Request $request, $user)
{
$request->session()->flash('status','success');
$request->session()->flash('msg',__('Welcome back :name',['name' => $user->name]));
return redirect('/');
}
The flash message does not be displayed. However, when I set return redirect('/anyOtherRoute')
it redirected to that route and the flash message is rendered successfully!
I, also, have tried to override sendLoginResponse
method instead of authenticated
method like the following:
protected function sendLoginResponse(Request $request)
{
$request->session()->regenerate();
$this->clearLoginAttempts($request);
$request->session()->flash('status','success');
$request->session()->flash('msg',__('Welcome back :name',['name' => '$user->name']));
return $this->authenticated($request, $this->guard()->user())
?: redirect()->intended($this->redirectPath());
}
Also there is no flash message there! Finally, I tried the checked answer for the regarded question: Flash message after login laravel, but it also does not make any difference:
use AuthenticatesUsers {
redirectPath as laravelRedirectPath;
}
public function redirectPath()
{
// Do your logic to flash data to session...
session()->flash('status','success');
session()->flash('msg',__('Welcome back :name',['name' => '$user->name']));
// Return the results of the method we are overriding that we aliased.
return $this->laravelRedirectPath();
}
The following is all of my LoginController code with commented any tries:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
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;
/*use AuthenticatesUsers {
redirectPath as laravelRedirectPath;
}*/
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/';
//protected $loginPath = 'admin';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest', ['except' => 'logout']);
}
protected function authenticated(Request $request, $user)
{
$request->session()->flash('status','success');
$request->session()->flash('msg',__('Welcome back :name',['name' => $user->name]));
return redirect('/job');
}
/*protected function sendLoginResponse(Request $request)
{
$request->session()->regenerate();
$this->clearLoginAttempts($request);
$request->session()->flash('status','success');
$request->session()->flash('msg',__('Welcome back :name',['name' => '$user->name']));
return $this->authenticated($request, $this->guard()->user())
?: redirect()->intended($this->redirectPath());
}*/
protected function sendFailedLoginResponse(Request $request)
{
$errors = [$this->username() => trans('auth.failed')];
if ($request->expectsJson()) {
return response()->json($errors, 422);
}
$request->session()->flash('status','danger');
$request->session()->flash('msg',__('Error: Login failed. Incorrect username or password'));
return redirect()->back()
->withInput($request->only($this->username(), 'remember'))
->withErrors($errors);
}
public function username()
{
return 'username';
}
/* public function redirectPath()
{
// Do your logic to flash data to session...
session()->flash('status','success');
session()->flash('msg',__('Welcome back :name',['name' => '$user->name']));
// Return the results of the method we are overriding that we aliased.
return $this->laravelRedirectPath();
} */
}
Additional Notice:
The route /
is defined as a chained method in the web.php
routes like the following:
Route::get('/', ['as' => 'home', function () {
return view('welcome');
}])->middleware('auth');