简体   繁体   中英

How to use `getLastAttempted()` in laravel 5.3?

How to use getLastAttempted() in laravel 5.3?

$user = auth()->getLastAttempted();
    dd($user);

    if (!$user->activated) {
        return redirect('/login')->with('status', 'This account has not been activated.');
    }

I want to check a user is activated or not when login (There is a activated field in users table ), I add the code above to login() method below of \\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Auth\\AuthenticatesUsers.php ,

as follow:

    public function login(Request $request)
    {
        $this->validateLogin($request);


        if ($this->hasTooManyLoginAttempts($request)) {
            $this->fireLockoutEvent($request);

            return $this->sendLockoutResponse($request);
        }

// start 
    $user = auth()->getLastAttempted();
        dd($user);

        if (!$user->activated) {
            return redirect('/login')->with('status', 'This account has not been activated.');
        }
   //end     

        if ($this->attemptLogin($request)) {
            return $this->sendLoginResponse($request);
        }


        $this->incrementLoginAttempts($request);

        return $this->sendFailedLoginResponse($request);
    }

The result of dd($user); is null.

What shoud I do?

wouldn't it make more sense to put your code chunks inside the if else statement?

public function login(Request $request)
    {
        $this->validateLogin($request);


        if ($this->hasTooManyLoginAttempts($request)) {
            $this->fireLockoutEvent($request);

            return $this->sendLockoutResponse($request);
        }

        if ($this->attemptLogin($request)) { 

            // start 
            $user = \Auth::user();
            dd($user);

            if (!$user->activated) {
                //instead of redirecting, increment attempts and send failed response
                $this->incrementLoginAttempts($request); 
                return $this->sendFailedLoginResponse($request);
            }else{
                return $this->sendLoginResponse($request);
            }
            //end     


        }



        $this->incrementLoginAttempts($request);

        return $this->sendFailedLoginResponse($request);
    }

You can override the validateLogin function:

$this->validate($request, [
        $this->username() => 'required|exists:users,' . $this->username() . ',activated,1',
        'password' => 'required',
    ]);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM