Laravel: How can I change the default Auth Password field name?

In the app/Http/Controllers/Auth/LoginController override the default class by adding:

/**
 * Validate the user login request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return void
 */
protected function validateLogin(Request $request)
{
    $this->validate($request, [
        $this->username() => 'required', 'passwd' => 'required',
    ]);
}

Don't forget to add use Illuminate\Http\Request;

It could be you have to add this too to your LoginController.

/**
     * Get the needed authorization credentials from the request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    protected function credentials(Request $request)
    {
        return $request->only($this->username(), 'passwd');
    }

That should do it.


Use this. It's work for me.

So far I have changed the User.php

public function getAuthPassword(){  
    return $this->senha;
}

and

public function setPasswordAttribute($value)
    {
        $this->attributes['password'] = bcrypt($value);
    }

Also on LoginController.php

public function username()
{
    return 'usuario';
}

For having username instead of email, you can overwrite username() in your LoginController.php

/**
 * Get the login username to be used by the controller.
 *
 * @return string
 */
public function username()
{
    return 'username';
}

And for passwd instead of password, you can do define an accessor in your App\User.php

/**
 * Get the password for the user.
 *
 * @return string
 */
public function getAuthPassword()
{
    return $this->passwd;
}

login.blade.php : Replace email input with username but do not change the name of the input for password.