samedi 14 avril 2018

Laravel flash message after login does not displayed in home route

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();
}   */
}



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire