Auto login after register in laravel 5.7

Viewed 1524

I want when I finished register it redirects me to the dashboard page (Auto login after the register).

this is the user register code :

public function store(Request $request)
    {
        $this->validator($request->all())->validate();


        $apprenant = Apprenant::create([
            'nom' => $request['nom'],
            'prenom' => $request['prenom'],
            'email' => $request['email'],
            'niveau' => $request['niveau'],
            'password' => Hash::make($request['password']),

        ]);


            return redirect('/apprenant/dashboard');
    }

But when I finished registring it redirects me to the login page

3 Answers

When creating a new user, create() method, should return a new model object. Use Auth::loginUsingId($apprenant->id); before redirecting to dashboard:

public function store(Request $request)
    {
        $this->validator($request->all())->validate();


        $apprenant = Apprenant::create([
            'nom' => $request['nom'],
            'prenom' => $request['prenom'],
            'email' => $request['email'],
            'niveau' => $request['niveau'],
            'password' => Hash::make($request['password']),

        ]);

            Auth::loginUsingId($apprenant->id);
            return redirect('/apprenant/dashboard');
    }

source https://laravel.com/docs/5.7/authentication#other-authentication-methods

Write this line before redirecting to the dashboard:

\Auth::login($apprenant);

or just,

auth()->login($apprenant);

That means, you code will look like:

public function store(Request $request)
    {
        $this->validator($request->all())->validate();


        $apprenant = Apprenant::create([
            'nom' => $request['nom'],
            'prenom' => $request['prenom'],
            'email' => $request['email'],
            'niveau' => $request['niveau'],
            'password' => Hash::make($request['password']),

        ]);

        //login the user
        \Auth::login($apprenant);

        return redirect('/apprenant/dashboard');
    }

Hi if you are create a guard then run this code for after register login Auth::guard(guard_name)->loginUsingId($id);

// example

    public function register(Request $req)
{
    $user = new User; // define here your model
    $user->name = $req->name;
    $user->email = $req->email;
    $user->password = Hash::make($req->password);

    if($user->save()){
        Auth::guard(guard_name)->loginUsingId($user->id);
    }

}

// logout overite

public function logout()
{
    Auth::guard('guard_name')->logout();
    return redirect("login_path");
}
Related