djmzfKnm
djmzfKnm

Reputation: 27185

How to set remember_token NULL in laravel

I have an application in laravel which have a Users table with a column remember_tokenand the User model has the three function mentioned here: http://laravel.com/docs/upgrade#upgrade-4.1.26

getRememberToken(), setRememberToken($value), getRememberTokenName()

In my login form, I have email, password and a remember me checkbox field. What I want is if user ticked that Remember Me checkbox, then only laravel should remember the user, else it should set the column as NULL.

But at the moment it is remembering it all the time, and I don't know how to set it to NULL.

My doLogin function code is below:

public function doLogin()
{
    $rules = array(
        'email'    => 'required|email',
        'password' => 'required|alphaNum|min:7'
    );

    $validator = Validator::make(Input::all(), $rules);

    if ($validator->fails()) {
        return Redirect::to('login')
            ->withErrors($validator)
            ->withInput(Input::except('password'));
    } else {

        $remember = Input::get('remember');

        $userData = array(
            'email'     => Input::get('email'),
            'password'  => Input::get('password')
        );

        // attempt to do the login
        if (Auth::attempt($userData, true)) {
            return Redirect::to('/');
        } else {
            return Redirect::to('login')->with('loginError', 'Incorrect email or password.');
        }
    }
}

Please tell me what modification I need to make so that it set remember_token as null in database when remember checkbox is not ticked by user.

Upvotes: 0

Views: 6375

Answers (1)

Jeemusu
Jeemusu

Reputation: 10533

To quote the documentation

If you would like to provide "remember me" functionality in your application, you may pass true as the second argument to the attempt method, which will keep the user authenticated indefinitely (or until they manually logout).

You are hard coding the second parameter to true instead of using the value taken from the user input.

You are already setting the input to the $remember variable, so try passing that instead.

Auth::attempt($userData, $remember)

Upvotes: 1

Related Questions